?? 動態給外部程序加一個按紐 (2001年3月15日).txt
字號:
動態給外部程序加一個按紐 (2001年3月15日)
網友更新 分類:Win API 作者:閻磊 推薦:yanlei 閱讀次數:357
(http://www.codesky.net)
--------------------------------------------------------------------------------
啟動計算器,給計算器加一個按鈕
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
proc : longint;
form_hw,hn:HWND;
implementation
{$R *.DFM}
function WndProc2(hwnd: HWnd; Msg: UINT; wParam: wParam;
lParam: LPARAM) : integer; Far; stdcall;
begin
CASE Msg OF
WM_LBUTTONUP:
begin
showmessage('ok');
end
END;
Result := CallWindowProc(TFNWndProc(proc), hwnd, Msg, wParam, lParam);
end;
procedure TForm1.Button1Click(Sender: TObject);
var l:longint;
rcw : Word;
begin
rcw := WinExec('calc.exe', SW_SHOWNORMAL);//啟動計算器
if rcw<=32 then //無法啟動計算器
begin
Application.Terminate;
end ;
while true do//確保計算器啟動
begin
form_hw:=FindWindow(nil,'計算器');
if boolean(form_hw) then break;
end;
hn := CreateWindow('BUTTON', 'ok',
WS_VISIBLE + WS_CHILD, 0, 0, 30, 20,form_hw
, 0, 0, nil);//left=0,top=0,width=30 height=20
proc := GetWindowLong(hn, GWL_WNDPROC);
l := longint(@WndProc2);//設定事件
SetWindowLong(hn, GWL_WNDPROC, l);
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
if boolean(form_hw) then//啟動
SendMessage(form_hw, wm_close,0,0);
end;
end.
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -