掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
二重起動防止でコマンドライン引数の受け渡しについて (ID:14073)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
二重起動を防止ししながら、コマンドラインの引数は既に起動中のフォームに送ろうとして、 次の様に作ってみましたが、※の箇所で"未定義の識別子エラー"となります。 定義の仕方の問題と思っておりますが、うまく行きません。 対処方法について教えて下さい。 *-------------------Project source-----------------------* program tushinn; uses Forms, Windows,Classes, Messages, Dialogs, SysUtils, tushinn_unit1 in 'tushinn_unit1.pas' {Form1}; {$R *.res} var mx : THANDLE; Wnd, AppWnd: HWnd; begin mx := OpenMutex(MUTEX_ALL_ACCESS, false, 'nonkichisoft'); if mx<>0 then begin Wnd := FindWindow('TForm1', nil); if Wnd <> 0 then begin SetForegroundWindow(Wnd); if paramcount>0 then CopyDataToOld(Wnd, Cmdline); //※<-----ここで未定義識別子エラー end; CloseHandle(mx); exit; end; mx := CreateMutex(nil,false,'nonkichisoft'); application.Initialize; Application.CreateForm(TForm1, Form1); application.Run; ReleaseMutex(mx); end. *-----------unit------------------------------------------* unit tushinn_unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ComObj; type TForm1 = class(TForm) Memo1: TMemo; private { Private 宣言 } public { Public 宣言 } procedure WMcopydata(var msg: TWMCopyData);message WM_COPYDATA; procedure CopyDatatoOld( Wnd: HWnd; aCmdline: string); end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.WMCopyData(var msg: TWMCopyData); var buf: Pchar; begin if msg.CopyDataStruct.dwData=0 then begin buf := StrAlloc(msg.CopyDataStruct.cbData); try StrCopy(buf, msg.CopyDataStruct.lpData); Memo1.Lines.Text := buf; finally StrDispose(buf); end; end else inherited; end; procedure TForm1.Copydatatoold(Wnd: HWnd; aCmdline: string); var //pcdata : PChar; cd : TCopyDataStruct; begin cd.cbdata := length(aCmdline)+1; cd.lpdata := stralloc(cd.cbdata); try strcopy(cd.lpdata, pchar(acmdline)); sendmessage(Wnd, WM_COPYDATA,0,lparam(@cd)); finally strdispose(cd.lpdata); end; end; end.
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.