以打開記事本為例﹐試了能不能馬上給我分呀。我急需。
procedure TForm1.Button1Click(Sender: TObject);
var
CommandLine,Txt: string;
bCreateProcess: boolean;
lpStartupInfo: TStartupInfo;
begin
Button1.Enabled := false;
Button2.Enabled := true;
//ÌîÈë StartupInfo
FillChar(lpStartupInfo, Sizeof(TStartupInfo), #0);
lpStartupInfo.cb := Sizeof(TStartupInfo);
lpStartupInfo.dwFlags := STARTF_USESHOWWINDOW;
lpStartupInfo.wShowWindow := SW_NORMAL;
CommandLine := 'C:/Winnt/Notepad.exe';
bCreateProcess := CreateProcessA(pchar(CommandLine),nil,
nil, nil, True, NORMAL_PRIORITY_CLASS, nil, nil,
lpStartupInfo, lpProcessInformation);
if bCreateProcess then
begin
//give some time for the app to initialize
WaitForInputIdle(lpProcessInformation.hProcess,60000);
memo1.clear;
memo1.Lines.Add(format(' hProcess: %d',[lpProcessInformation.hProcess]));
memo1.lines.add(format(' hThread: %d',[lpProcessInformation.hThread]));
memo1.lines.add(format('dwProcessID: %d', [lpProcessInformation.dwProcessID]));
memo1.lines.add(format(' dwThreadID: %d', [lpProcessInformation.dwThreadId]));
WndCount:=0;
//Get Thread Window
enumThreadWindows(lpProcessInformation.dwThreadID, @enumThreadWndProc, 0);
memo1.Lines.Add('----------');
//Get Child Window
enumChildWindows(wndArray[0], @enumThreadWndProc,0);
//set caption
Txt := 'Testing';
SendMessage(WndArray[0], WM_SetText, 0, LParam(pChar(Txt)));
//set text
Txt := 'This is test text';
SendMessage(EditHandle, WM_SetText, 0, LParam(pChar(Txt)));
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
PostMessage( WndArray[0], WM_Command, 28, 0);
Button1.Enabled := true;
end;