标题:如何解决连编后 EXE 文件重复运行出现“文件不能存取”错误?
只看楼主
kongxc
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:60
专家分:104
注 册:2007-9-30
得分:0 
我按liuxingang28老师的以上方法使用了,测试结果是虽然显示了窗口,但它是个透明的窗体,上面的全部控件都看不见,所以无法使用.我在表单的窗口激活事件中加入了表单和控件的全部Refresh,也没有任何作用.请liuxingang28老师多多指教....
2014-05-09 14:49
pzyun1985
Rank: 2
等 级:论坛游民
帖 子:106
专家分:18
注 册:2013-4-13
得分:0 
回复 11 楼 kongxc
是的,而且不知道怎么解决
2014-05-10 23:48
liuxingang28
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:山东济南
等 级:贵宾
威 望:47
帖 子:649
专家分:2156
注 册:2014-2-7
得分:0 
经过测试,我的代码在 Windows XP 下运行未遇到你说的问题,不过有一点 Bug,现修正如下:
程序代码:
# DEFINE SW_NORMAL 1    && 窗口状态:正常大小
# DEFINE SW_MAXIMIZE 3  && 窗口状态:最大化

DECLARE integer FindWindow IN WIN32API integer,string    && 获取应用程序窗口句柄
DECLARE integer ShowWindow IN WIN32API integer,integer   && 显示应用程序窗口
DECLARE integer IsZoomed IN WIN32API integer             && 判断窗口是否最大化
DECLARE integer SetForegroundWindow IN WIN32API integer

cTitle = '物料管理系统'                   && 应用程序标题
nHwnd = FindWindow(0,cTitle)              && 获取窗口句柄
IF nHwnd > 0                              && 应用程序已启动
    SetForegroundWindow(nHwnd)
    IF IsZoomed(nHwnd) = 1                && 原窗口的状态是最大化
        ShowWindow(nHwnd,SW_MAXIMIZE)     && 激活原窗口,并保持最大化
    ELSE
        ShowWindow(nHwnd,SW_NORMAL)       && 原窗口是隐藏或最小化状态,则激活原窗口,并保持正常大小
    ENDIF
    QUIT                                  && 退出本次应用程序
ENDIF
以上代码增加了两行,其中一行是 DECLARE integer SetForegroundWindow IN WIN32API integer,定义了一个设置活动窗口的 API 函数,另一行语句是 SetForegroundWindow(nHwnd),先将原应用程序窗口设定到前台,然后再恢复大小。
不知道楼主的操作系统是 XP 还是 Win7,我仅在 XP 下测试通过。

泉城飞狐
2014-05-11 08:48



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-430857-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.029284 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved