我在一个工程1的一个按钮的click中
调用winexec('project2.exe');那么就运行工程2]如果我想实现 在工程1的一个按钮的click中
实现 运行工程2后自动触发工程2中form1的一个按钮click
怎么实现??声明一下 不能在form的create中 触发click
因为我只有 在工程1的一个按钮的click中 运行project2后触发它里面一个click简单的说就是 在project1中的按钮click 怎么 调用project2中一个按钮的click????
调用winexec('project2.exe');那么就运行工程2]如果我想实现 在工程1的一个按钮的click中
实现 运行工程2后自动触发工程2中form1的一个按钮click
怎么实现??声明一下 不能在form的create中 触发click
因为我只有 在工程1的一个按钮的click中 运行project2后触发它里面一个click简单的说就是 在project1中的按钮click 怎么 调用project2中一个按钮的click????
解决方案 »
- 帮帮忙?把下面的这段代码改成sql语句中的insert into(插入) 和 update(修改)数据?
- 菜鸟求助,Pascal 和C++的对应写法!
- 请问各位大侠哪里有学习Indy的资料,最好是中文的?
- 关于内存占用的问题?
- 像资源管理器那样,可以拖动中间分隔栏,调整大小,怎么做?
- 如何判断所写的判断语句是否正确?
- 请问TTreeView怎么用?
- 如何使combobox内的内容不重复?在线等 。。。。。。。。。
- 简单问题!签个名,该帖子的分就是你的!反正没人答得出!
- adoquery的sort问题
- 雪MM照片,嘿
- 200分,谁来帮我看看我Hook窗口创建的代码有什么错误?能Hook成功,只是会导致资源管理器错误
FindWindowEx获取按钮句柄,
发送消息
SendMessage(btnHandle,BN_CLICKED,0,0);
procedure TForm1.Button1Click(Sender: TObject);
type
//定义一个结构体,用来返回启动窗体的句柄
PFindData = ^TFindData;
TFindData = record
hProcess: THandle;
hWindow: THandle;
end; function EnumWindowsProc(Handle: THandle; lParam: LPARAM): Boolean; stdcall;
var
hProcess: THandle;
FindData: PFindData;
begin
Result := True; //继续枚举一下窗体
FindData := PFindData(lParam);
GetWindowThreadProcessId(Handle, hProcess); //取得窗体进程ID号
if hProcess = FindData^.hProcess then
begin
FindData^.hWindow := Handle; //已经找到!!
Result := False;
end;
end;var
FileName: string;
ProcessInfo: TProcessInformation;
StartUpInfo: TStartupInfo;
hButton: THandle;
AFindData: TFindData;
begin
FileName := ExtractFilePath(ParamStr(0)) + 'Project2.exe'; FillChar(StartUpInfo, SizeOf(StartUpInfo), $00);
StartUpInfo.dwFlags := STARTF_USESHOWWINDOW;
StartUpInfo.wShowWindow := SW_SHOW; if CreateProcess(nil, PChar(FileName), nil, nil,
False, IDLE_PRIORITY_CLASS, nil, nil, StartUpInfo,
ProcessInfo) then
begin
//等就直到另外一下程序都准备好了
WaitForInputIdle(ProcessInfo.hProcess, INFINITE); AFindData.hProcess := ProcessInfo.dwProcessId;
AFindData.hWindow := 0;
EnumWindows(@EnumWindowsProc, Integer(@AFindData));
if AFindData.hWindow <> 0 then
begin
hButton := FindWindowEx(AFindData.hWindow, 0, 'TButton', 'Button1');
if hButton <> 0 then
SendMessage(hButton, CN_COMMAND, BN_CLICKED, 0);
end; CloseHandle(ProcessInfo.hThread);
CloseHandle(ProcessInfo.hProcess);
end;
end;
FindWindowEx获取按钮句柄,
发送消息
SendMessage(btnHandle,BN_CLICKED,0,0);
想问一下winexec可以实现么?
想问一下winexec可以实现么?
可以的话 怎么实现?????