界面上链接一个exe文件,如何实现若该程序已经打开,则显示该程序,否则运行该程序。环境:delphi7。谢谢。
解决方案 »
- 用delphi做GUI而用C++来实现行不行?
- 我想将普通的过程当成TNotifyEvent类型的过程使用,我应该怎么做呢..........
- 我在MIDAS服务器里创建了方法,为什么远程不能访问
- 新年好!关于程序在OS启动时自动行的问题。。
- 紧急求援,谁能告诉我电子地图的思路,up有分
- ▁▂▃▄▅▆▇█ InstallShield6.21中如何设置Program Group中快捷项目的排列顺序啊?█▇▆▅▄▃▂▁
- 菜鸟问题2,进来拿分!
- 很急!很急!高手们帮帮忙,小弟谢了
- 这样的问题怎么解决???
- 那位大师指点一下关于CLientDataSet中的统计字段的用法
- 用DELPHI做类似资源管理器的树,且树节点处带选择框。如何做?
- 如何将TREEVIEW中被选择的多个文件或目录拷贝到一个新的目录
var
ZAppName: array[0..127] of char;
Hold: String;
Found: HWND;
begin
Hold := Application.Title;
Application.Title := 'OnlyOne'
+ IntToStr(HInstance); // 暂时修改窗口标题
StrPCopy(ZAppName, Hold); // 原窗口标题
Found := FindWindow(nil, ZAppName); // 查找窗口
Application.Title := Hold; // 恢复窗口标题
if Found<>0 then begin
// 若找到则激活已运行的程序并结束自身 ShowWindow(Found, SW_RESTORE);
Application.Terminate;
end;
end;
关于原子表
系统提供许多原子表.每个原子表用于不同的目的;例如,动态数据交换(DDE)应用程序使用全局原子表(global atom table)与其他应用程序共享项目名称和主题名称字符串.不用传递实际的字符串,一个DDE应用程序传递全局原子给它的父进程.父进程使用原子提取原子表中的字符串...
关于对原子的操作,有一组专门的API函数:
GlobalAddAtom 在表中增加全局原子
GlobalDeleteAtom 在表中删除全局原子
GlobalFindAtom 在表中搜索全局原子
GlobalGetAtomName 从表中获取全局原子
几个应用:
1. 可以用这种方法实现避免程序二次启动。基本处理如下:
if (GlobalFindAtom(Atom) != 0)//在系统原子表中找原子
{
::MessageBox(NULL,"已经运行了一个实例!",Application->Title.c_str(),MB_OK ¦MB_SYSTEMMODAL);
return FALSE;
}
GlobalAddAtom(Atom);//增加原子