利用process打开其他软件不在桌面上显示的方法(求解决闪现问题)

已解决  已打赏  
哇哈哈 哇哈哈  悬赏: 5 金币
发布:2017-06-14 11:51:23 分类:问答
想实现一个功能, 利用进程打开一个exe软件,但是这个软件不能以界面的形式打开,只存在于进程中,就是说用户看不到界面,这个应该怎么做?
//利用打开软件
var prcs = process( "notepad.exe" )
//上面获取到进程中的id,利用id找到进程的句柄
var handww = winex.findMainWnd(,,prcs.id)

console.dump(handww)
console.dump(prcs)
win.show(handww,false)


但是这样的话,现象是:

桌面突然闪动一下,然后那个界面消失了

后台确实存在了这个进程,功能也实现了,

但是这个闪动一下太恶心人了.

求问这个闪现应该怎么消除????

  • Admin Admin    被采纳
    Time:2017-06-14 12:58:04
    搜索下这个结构体

    SHELLEXECUTEINFO structure https://msdn.microsoft.com/en-us/library/bb759784(VS.85).aspx

    ShellExecuteEx function https://msdn.microsoft.com/en-us/library/bb762154(VS.85).aspx

    研究下aardio标准库里process.executeEx()的源代码:

    executeEx = function( file,parameters,operation,showCmd,workdir,hwnd,fMask ){
    if(type(file)!="string")error("无效的文件路径",2);
    if( parameters === null ) parameters = "";
    if( operation === null ) operation = "open";
    if( showCmd === null ) showCmd = 5;
    if( hwnd === null ) hwnd = 0;

    file = ..io.localpath(file) : file;
    if( (! #workdir ) ){
    workdir = ..io.splitpath(file).dir ;
    }

    if( type(parameters) == type.table ){ parameters = joinArguments(parameters); }
    var shInfo = SHELLEXECUTEINFO();
    shInfo.fMask = fMask === null ? ( 0x440 /*SEE_MASK_NOCLOSEPROCESS|SEE_MASK_FLAG_NO_UI*/ ) : fMask;
    shInfo.hwnd = hwnd;
    shInfo.lpVerb = operation;
    shInfo.lpFile = file;
    shInfo.lpParameters = parameters;
    shInfo.lpDirectory = workdir;
    shInfo.nShow = showCmd;
    shInfo.hInstApp = 0;
    shInfo.lpClass ="";
    var ret = ::Shell32.ShellExecuteExW(shInfo);
    if(!ret) return null,..lasterr();
    return shInfo;
    }
  • micksoft micksoft    
    Time:2017-06-14 13:06:55
    import console; 
    import process;
    process.execute("notepad.exe", , ,0x0/*_SW_HIDE*/ )
    console.pause(true);

  • Admin Admin    
    Time:2017-06-14 13:40:51
    隐藏界面启动,只对部分软件有效。
  • 米兔 米兔    
    Time:2017-06-14 14:15:38
    感觉不错啊,顶起来。
  • 哇哈哈 哇哈哈    
    Time:2017-06-14 15:21:55
    只对部分软件有效,比如calc.exe计算器就不能用
    好在对我要用的bushound软件,下面的最小化到任务栏可以用,然后在调用一次
    0x2/*_SW_SHOWMINIMIZED*/

    win.show(handww,false)
    隐藏,这样不闪了(废话嘛,都最小化到任务栏了),但是还是有个遗憾: 可以看到任务栏里突然闪了一下一个软件,然后就没了.但是总比整个页面闪一下好.
    总之,,下面的代码是我研究这个的时候用的,用了process没有用excute,用到info设置
    WSTARTUPINFO = class {
    INT cb ;
    ustring reserved;
    ustring desktop;
    ustring title;
    INT x;
    INT y;
    INT xSize;
    INT ySize;
    INT xCountChars;
    INT yCountChars;
    INT fillAttribute;
    INT flags;
    WORD showWindow;
    WORD cbReserved2;
    ustring lpReserved2;
    pointer stdInput;
    pointer stdOutput;
    pointer stdError;
    creationFlag = 0;
    inheritHandles;
    };
    console.open()

    var startupinfow = WSTARTUPINFO();
    startupinfow.reserved = null
    startupinfow.x = 0
    startupinfow.y = 0
    startupinfow.xSize = 0
    startupinfow.ySize = 0
    startupinfow.xCountChars = 500
    startupinfow.yCountChars = 500
    startupinfow.title = null
    startupinfow.flags = 0x1/*_STARTF_USESHOWWINDOW*/
    startupinfow.showWindow = 0x2/*_SW_SHOWMINIMIZED*/;
    startupinfow.cbReserved2 = 0
    startupinfow.lpReserved2 = null
    startupinfow.stdInput = null
    startupinfow.stdOutput = null
    startupinfow.stdError = null

    startupinfow.cb = raw.sizeof( startupinfow);
    console.dump(startupinfow)

    winform.button.oncommand = function(id,event){
    var prcs = process("notepad.exe",,startupinfow)
    var handww = winex.findMainWnd(,,prcs.id)
    win.show(handww,false)
    }



  • 哇哈哈 哇哈哈    
    Time:2017-06-14 15:22:48
    静待有能实现我要求的答案......................
  • 哇哈哈 哇哈哈    
    Time:2017-06-15 12:43:49
    最终利用了虚拟桌面实现完全隐藏,详情见那个虚拟桌面间通信的问题贴.....
[ 发单/接单 ]
换IP投票软件
PC蛋蛋自动挂机投注
新浪微博发微博显示尾巴的方法,比如显示来自iphone 7
百度文库批量自动上传软件
一点资讯app刷阅读量/评论/收藏/订阅功能/手机号注册
定做一个阿迪达斯官网注册器(需要破点击文字式验证码)
定制人人网自动注册/修改资料/采集/私聊软件
酷狗繁星直播网页协yi
YY多功能刷订阅刷粉丝
滑块验证码本地识别
狼人杀POST QQ登录注册 获取金币数量
做个贴吧发发帖的软件懂的来
今日头条账号保存cookie
抖音粉丝软件定做,只要粉丝
百家号自媒体发文软件定制
哔哩哔哩播放量
读取TB某个商品上架时间和相关信息
网易博客软件定制
定制天涯论坛发帖软件
定制今日头条批量自动发私信软件
[ 站内搜索 ]
[ 最近热帖 ]
万能助手 -- 扩展库大全集 13753
用aardio创建web工程图文讲解(1) 12844
电脑编程入门自学:Fiddler https 抓包时提示创建根证书不成功问题彻底解决(https插件dll方式) 11746
aardio绘图演示 11415
通过chrome.dll中间件控制外部chrome浏览器 10128
我常用的aardio技巧 9778
《边学C语言边赚钱——简码编程入门教程》系列集合 9619
aardio使用http或whttp进行get/post请求时经常cookies失效怎么办?__电脑计算机编程入门教程自学 9324
[源码下载]简码视频加密解密播放工具个人版v1.0发布,永久免费开源的知识变现神器 8558
python人工智能爬虫系列:怎么查看python版本_电脑计算机编程入门教程自学 8049
编程入门教程:aardio批量上传文件并显示进度条 7887
aardio调用nodejs的ws模块做一个简单的聊天通信示例 7038
电脑计算机编程入门教程自学:原生JavaScript判断字符是否为A-Za-z英文字母 6908
电脑计算机编程入门教程自学:腾讯tx或极验geetest滑块按住拖动完成拼图验证成功破解思路及源码 6503
乐玩插件AARDIO调用 6090
[ 近期热答 ]
电脑计算机编程入门教程自学:什么是buffer缓冲区? 1
aardio_代码编辑框书签管理器开源 1
aardio_怎么用ide库从代码编辑框中取出指定行的源码? 1
aardio_codepage代码页编码乱码暴力猜解工具 1
aardio内嵌echarts图表添加鼠标事件响应功能 2
aardio列表框listbox_模糊查找和精确查找 1
8亿QQ绑定手机泄露:通过腾讯QQ号查询QQ绑定的手机号码漏洞! 1
carl listviewex调用例子----------源码搬运工 2
Aardio内嵌Electron浏览框怎么正确添加启动参数? 1
Aardio取汉字的字节数或字符数 1
怎么实现mssql图片数据的读写 2
aardio_从49个数字里选六个和值为150的不重复的数字 1
在嵌入wps的时候,多了一个 透明的边框,这个怎么消除它 1
万能助手入门帮助教程:学会科学地管理工作文件 1
Aaardio开发内嵌Electron浏览框放服务器上无法下载组件的解决办法 1