如何把最小化在任务栏的程序的主界面调出来?

lpq213140808 2010-01-19 06:19:38
我现在有2个程序,比如有 A 程序,B 程序,其中B程序是可以最小化到任务托盘的。
我想在A程序中加一个按钮,点击时执行的动作是:
如果B程序未启动,则启动B程序。
如果B程序已经启动,而且已经隐藏在任务栏下,则把主界面调出来。
请问这样能不能实现?
...全文
224 11 打赏 收藏 举报
写回复
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
lpq213140808 2010-01-23
  • 打赏
  • 举报
回复
楼上的方法好象和我的愿意有点出入吧!
我的意思是在A程序里点个按钮:

procedure TForm1.Button1Click(Sender: TObject);
begin
if {进程列表里存在程序 "B.exe" } then
{显示出主窗体}
else
begin
ShellExecute(handle, nil,pchar('D:\test.exe'),Nil, Nil, SW_NORMAL);
{显示主窗体}
end
end;
mynameis_007 2010-01-22
  • 打赏
  • 举报
回复
判断B 程序是否启动在B 程序中处理,大概思路如下,自己处理下

A 程序:
procedure TForm1.Button1Click(Sender: TObject);
begin
ShellExecute(handle, nil,pchar('D:\test.exe'),Nil, Nil, SW_NORMAL);
end;

B 程序:
if FindWindow(nil,'test') <> 0 then
begin
if Visible = false then
begin
Visible := true;
Application.ShowMainForm := Visible;
SetForegroundWindow(Application.Handle);
ShowWindow(Application.Handle, SW_SHOWNORMAL);
end;
end;
lpq213140808 2010-01-22
  • 打赏
  • 举报
回复
有没有人能给出一个具体的代码呢?谢谢了
lpq213140808 2010-01-19
  • 打赏
  • 举报
回复
你的意思是不是这样: FindWindow(NIL,'MainForm')
可是不行啊~~
cnzdgs 2010-01-19
  • 打赏
  • 举报
回复
FindWindow的第1个参数给窗口注册的类名,第2个参数给窗口的标题,两者可以只给其中一个,但需要确保不会找到其它符合条件的窗体。
cnzdgs 2010-01-19
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 huayue0808 的回复:]
还是不太明白,假如我的B程序的可执行程序名字叫“MyAppName.exe" , 这个主程序的主窗体名字叫"MainForm" , 那用楼上说的方法的话,怎么实现啊?
findwindow 的参数要怎么传入?
[/Quote]
用窗体名。
lpq213140808 2010-01-19
  • 打赏
  • 举报
回复
我现在用进程枚举的方式找到这个进程的th32ProcessID了,然后要怎么调用ShowWindow 来显示主窗体呢?
lpq213140808 2010-01-19
  • 打赏
  • 举报
回复
还是不太明白,假如我的B程序的可执行程序名字叫“MyAppName.exe" , 这个主程序的主窗体名字叫"MainForm" , 那用楼上说的方法的话,怎么实现啊?
findwindow 的参数要怎么传入?
cnzdgs 2010-01-19
  • 打赏
  • 举报
回复
FindWindow查找窗口,如果找到就ShowWindow,没找到就加载进程。
lpq213140808 2010-01-19
  • 打赏
  • 举报
回复
用代码怎么实现?能不能写个例子,呵呵!
gyk120 2010-01-19
  • 打赏
  • 举报
回复
你可以用进程快照或者直接枚举B进程,找到了之后直接showwindow
发帖
Windows SDK/API

1177

社区成员

Delphi Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
帖子事件
创建了帖子
2010-01-19 06:19
社区公告
暂无公告