有啥办法屏避掉程序运行中弹出的MS-DOS窗口?急,这个问题

JackS 2001-12-17 01:20:39
...全文
254 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
lesni 2002-01-30
  • 打赏
  • 举报
回复
zhugejunshi(诸葛军师)的方法就可以呀,我现在就用的这种方式,没问题。
pbworm 2002-01-30
  • 打赏
  • 举报
回复
to liulee

请帮忙将这个帖子结了,如果要分的话,我可以给。
pbworm 2002-01-12
  • 打赏
  • 举报
回复
最小化怎么能实现对用户的完全透明呢
81739649 2002-01-12
  • 打赏
  • 举报
回复
最小化不就行了吗
pbworm 2002-01-12
  • 打赏
  • 举报
回复
没有人知道吗?再推

可能是分少了?
liulee 2002-01-11
  • 打赏
  • 举报
回复
这是被csdn删掉的第一个精华贴:

如何关闭RUN()DOS命令后产生的DOS窗口
作  者:zm_stone
所属论坛:PowerBuilder
问题点数:20
回复次数:9
发表时间:2000-3-19 14:44:00




回复贴子:
 回复人:929() (2000-3-20 8:01:00) 得5分
能否把你所用的DOS命令说一下是什么?我在机器上用没有问题,运行后DOS窗口自动关闭。
我的方法是:run("xcopy /?")或run("aa.bat")

 回复人:sunsetyang() (2000-3-20 8:34:00) 得10分
打开属性框->点击推出后关闭选项即可!!

 回复人:sunsetyang() (2000-3-20 8:42:00) 得0分
属性是指pif文件的属性.
属性->程序->退出后关闭 选中即可在程序退出后关闭.
普通的应用程序好像是不可以的,你只能为其创建合适的pif以后才能在退出是正确的关闭.不然似乎会停留在等待关闭状态.
 回复人:fish007(东海之鱼) (2000-3-20 8:46:00) 得5分
不知你要运行什么DOS命令?如果是批处理命令或可执行文件,可以建立相应的.PIF文件,然后设置其属性,如sunsetyang所说,选择“退出后关闭”。此方法应用在我单位的主要软件系统中,从未出错。
 回复人:flywind() (2000-8-6 14:40:00) 得0分
在其Dos快捷方式(*.pif)->属性->程序上
将<退出时关闭>的选项勾上!
运行后DOS窗口就自动关闭了!

 回复人:aiirii() (2000-8-8 18:40:00) 得0分
用run("command/c xcopy /?")或run("command/c aa.bat")
 回复人:aiirii() (2000-8-8 18:54:00) 得0分
应为:("command.com/c xcopy /?")
 回复人:qiangsheng(强晟) (2000-8-14 14:12:00) 得0分
在PB程序里设置的话就如AIIRII说的,在COMMAND后面加个/C参数就可以了。
此法同样适用与其他语言调用DOS窗口的情况。
我记得还有方法最小化打开的DOS窗口,很长时间没用,都忘了。
 回复人:elapsing() (2001-2-16 22:25:00) 得0分
用api函数createProcess()吧,网上有现成用户对象,谁要是找不着我还可以给他寄一个.

我用过,这个用户对象好像有需要改进的地方,但确实很好用,可以控制窗口,可以等待直到执行完后才往下执行。

ferbruary 2002-01-11
  • 打赏
  • 举报
回复
做个记号,学习!
pbworm 2002-01-11
  • 打赏
  • 举报
回复
Sorry,我只是想隐藏当前的应用窗口,关于关闭我已经知道了。

我想使用API函数的showWindow,但是里面的SW_HIDE常数值是多少啊?手边没有VB和VC,不能直接看啊。
sunjingqian 2002-01-11
  • 打赏
  • 举报
回复
按如下即可完成(本人楼下的10台收款机一直在用):
1.Run ( 'xx.bat',Minimized! );
2'在xx.bat中为
第一行:你的dos程序
第二行:exit
3'为xx.bat建一个pif快捷方式

sorrow_arrow 2002-01-11
  • 打赏
  • 举报
回复
我也学习
pbworm 2002-01-11
  • 打赏
  • 举报
回复
再推一下
m_cen 2002-01-10
  • 打赏
  • 举报
回复
应该设置窗口的状态:
1.Run ( 'yourprogram',Minimized! );
2.winexec('yourprogram', SW_HIDE);
pbworm 2002-01-10
  • 打赏
  • 举报
回复
pbworm 2002-01-10
  • 打赏
  • 举报
回复
难道没有人会吗?
再推
pbworm 2002-01-09
  • 打赏
  • 举报
回复
这个问题我也想知道
JackS 2001-12-17
  • 打赏
  • 举报
回复
我不需要在执行完后关掉MS-DOS窗口,需要RUN()这个外部程序时不弹出MS-DOS窗口,保持用户只可见系统程序主窗口
PBVC 2001-12-17
  • 打赏
  • 举报
回复
学习
WangNan 2001-12-17
  • 打赏
  • 举报
回复
将外部程序设个PIF,设置该PIF文件指定执行完成后关闭窗口。
JackS 2001-12-17
  • 打赏
  • 举报
回复
我是RUN()一个外部程序,这个外部程序在执行时要弹出MS-DOS窗口,所以......
zhugejunshi 2001-12-17
  • 打赏
  • 举报
回复
第一步:定义全局外部函数:

Function long ShellExecuteA (long hwnd, string lpOperation ,String lpFile, String lpParameters, String lpDirectory, Long nShowCmd) Library "shell32.dll"
Function long FindWindowA (String lpClassName , String lpWindowName ) Library "user32.dll"
Function boolean IsWindow (Long hwnd ) Library "user32.dll"

[用API函数,可以隐藏应用程序的窗口,但是调用bat批处理命令时需要先建立一个PIF(批处理命令的快捷键方式)文件指定执行完成后关闭窗口(其中的一个属性),否则窗口不会自行关闭。]

第二步:在窗口上建立按扭,clicked事件中包含如下Script:

ulong ll_handle,lu_return
string ls_path

SetPointer(HourGlass!) //设置鼠标指针
//运行DOS批处理命令的快捷键方式,并将其窗口隐藏
lu_return = ShellExecutea(handle(parent), "open", "xxx.pif", "", ls_path, 0)
//最后一个参数改为 4,可以显示执行情况,0为隐藏窗口
if lu_return>32 then
ll_handle = 0
//循环至DOS窗口打开
Do While ll_handle = 0
ll_handle = FindWindowA("tty","xxx")
yield()
loop
//等待DOS窗口关闭
Do While isWindow(ll_handle)
Yield()
Loop
//应用执行完成
MessageBox("提示信息", "运行完毕!")
end if


加载更多回复(2)

1,085

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 相关问题讨论
社区管理员
  • 基础类社区
  • WorldMobile
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧