掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
別アプリのツールバーのボタンを押下するには (ID:42085)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
ハンドル名を見たら,Atchoum さんじゃぁないですか.それじゃぁ,というわけで, もし,他の方の作成した共有メモリのコードを使ってもいいのであれば, この間の,RichEditのサンプルに含まれているユニットが使えます. サンプルは,こんなんではどうでしよう. えっと,Delphi 2007でしたっけ.多分動作するでしよう(確信なし) 動作確認は,Windows 7 U64 + Delphi XEです. この間のRichEditは,PostMessageをSendMessageにしたのがありましたが,今回は 逆に,マウスボタンのDownとUPは,PostMessageの方がいいです. implementation uses CommCtrl, CommonMemoryUnit; {$R *.dfm} //============================================================================= // 他のアプリのツールバーのボタンをクリックするサンプル // Halbow資料館の共有メモリユニット,CommonMemoryUnitを利用 // // TB_GETITEMRECTの使用には,usesにCommCtrlが必要 //============================================================================= procedure TForm1.Button1Click(Sender: TObject); var r : TRect; hToolBar : HWND; hTargetWnd : HWND; ALeft : WORD; ATop : WORD; ComMem : TCommMemNT; ASize : Integer; begin //他のアプリのTToolbarのハンドルを取得 hTargetWnd := FindWindow('TTargetForm', nil); if hTargetWnd = 0 then exit; hToolBar := FindWindowEx(hTargetWnd, 0, 'TToolbar', nil); if hToolBar = 0 then exit; //TToolbarのボタンのTRect構造体の値を,共有メモリを介して取得 ASize := SizeOf(r); ComMem := TCommMemNT.Create(hToolBar, ASize); try SendMessage(hToolBar, TB_GETITEMRECT, 1, LPARAM(ComMem.MemPtr)); ComMem.Read(0, @r, ASize); finally ComMem.Free; end; //TToolbarのボタンをクリック ALeft := r.Left + 2; ATop := r.Top + 2; PostMessage(hToolBar,WM_LBUTTONDOWN, 0, MakeLParam(ALeft, ATop)); PostMessage(hToolBar,WM_LBUTTONUP, 0, MakeLParam(ALeft, ATop)); end;
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.