天灵灵,地灵灵,但愿这个一定灵!!!python调用win32api,启动应用程序窗口
这个是逼到没办法,C#那一套,一点基本没有。
还好,网上找到例程,可以指定帐户启动进程,但愿可以摆脱WIN SERVICE启动产生的SESSION 0 隔离问题。
因为这个问题,以SERVICE启动的进程的程序,没办法打开正常的程序窗口。
from ctypes import * from ctypes.wintypes import * INVALID_HANDLE_VALUE = -1 CREATE_UNICODE_ENVIRONMENT = 0x00000400 CData = Array.__base__ LPBYTE = POINTER(BYTE) class PROCESS_INFORMATION(Structure): '''http://msdn.microsoft.com/en-us/library/ms684873''' _fields_ = [ ('hProcess', HANDLE), ('hThread', HANDLE), ('dwProcessId', DWORD), ('dwThreadId', DWORD), ] LPPROCESS_INFORMATION = POINTER(PROCESS_INFORMATION) class STARTUPINFOW(Structure): 'http://msdn.microsoft.com/en-us/library/ms686331' _fields_ = [ ('cb', DWORD), ('lpReserved', LPWSTR), ('lpDesktop', LPWSTR), ('lpTitle', LPWSTR), ('dwX', DWORD), ('dwY', DWORD), ('dwXSize', DWORD), ('dwYSize', DWORD), ('dwXCountChars', DWORD), ('dwYCountChars', DWORD), ('dwFillAttribute', DWORD), ('dwFlags', DWORD), ('wShowWindow', WORD), ('cbReserved2', WORD), ('lpReserved2', LPBYTE), ('hStdInput', HANDLE), ('hStdOutput', HANDLE), ('hStdError', HANDLE), ] LPSTARTUPINFOW = POINTER(STARTUPINFOW) # http://msdn.microsoft.com/en-us/library/ms682431 windll.advapi32.CreateProcessWithLogonW.restype = BOOL windll.advapi32.CreateProcessWithLogonW.argtypes = [ LPCWSTR, # lpUsername LPCWSTR, # lpDomain LPCWSTR, # lpPassword DWORD, # dwLogonFlags LPCWSTR, # lpApplicationName LPWSTR, # lpCommandLine (inout) DWORD, # dwCreationFlags LPCWSTR, # lpEnvironment (force Unicode) LPCWSTR, # lpCurrentDirectory LPSTARTUPINFOW, # lpStartupInfo LPPROCESS_INFORMATION, # lpProcessInfo (out) ] def CreateProcessWithLogonW( lpUsername=None, lpDomain=None, lpPassword=None, dwLogonFlags=0, lpApplicationName=None, lpCommandLine=None, dwCreationFlags=0, lpEnvironment=None, lpCurrentDirectory=None, startupInfo=None ): if (lpCommandLine is not None and not isinstance(lpCommandLine, CData) ): lpCommandLine = create_unicode_buffer(lpCommandLine) dwCreationFlags |= CREATE_UNICODE_ENVIRONMENT if startupInfo is None: startupInfo = STARTUPINFOW(sizeof(STARTUPINFOW)) processInformation = PROCESS_INFORMATION( INVALID_HANDLE_VALUE, INVALID_HANDLE_VALUE) success = windll.advapi32.CreateProcessWithLogonW( lpUsername, lpDomain, lpPassword, dwLogonFlags, lpApplicationName, lpCommandLine, dwCreationFlags, lpEnvironment, lpCurrentDirectory, byref(startupInfo), byref(processInformation)) if not success: raise WinError() return processInformation if __name__ == '__main__': pi = CreateProcessWithLogonW( "wahaha", ".", "wahaha", 0, None, "C:\\Windows\\notepad.exe") print(pi.dwProcessId)
天灵灵,地灵灵,但愿这个一定灵!!!python调用win32api,启动应用程序窗口的更多相关文章
- Node.js 4.0.0:灵雀云和 OneAPM 的整合测试
关于 Node.js 4.0.0 稳定版刚刚推出,备受期待,迫不及待地想用它写点东西:此外,要把 Demo 放到 Internet 上得有一个公网 IP ,看到灵雀云挺不错的而且提供域名解析,简直业界 ...
- 灵雀云受邀加入VMware 创新网络,共同助力企业数字化进程
11月15日,在VMware主办的“VMware创新网络”2018高峰论坛上,VMware发布了VMware创新网络(VMwareInnovation Network,VIN)的长期发展规划和 ...
- CentOS下配置nginx conf/koi-win为同一文件的各类错误
今天配置CentOS6.5下安装Nginx + php7 + mysql5.7.15遇到了一些坑.本来家里的电脑在配置环境的时候没有问题,拿去公司的电脑上就是到处报错.不知道是不是人品问题.今晚在家重 ...
- 2012蓝桥杯本科组C/C++决赛题
星期几 [结果填空] (满分5分) 1949年的国庆节(10月1日)是星期六. 今年()的国庆节是星期一. 那么,从建国到现在,有几次国庆节正好是星期日呢? 只要答案,不限手段! 可以用windows ...
- 可以,得驾证了\(^o^)/
说实在话,我自认为我不太适合开车. 首先我有点晕车,在车上坐久了就头晕脑胀. 心里素质也不行,凡是遇到什么事了,就慌慌张张,手忙脚乱. 然后就是练车一点都不稳,每次练车都会有新问题出现. 先说一下我科 ...
- GO语言面向对象05---接口的多态
package main import "fmt" type Fighter interface { Attack() (bloodloss int) Defend() } /*骑 ...
- Html5的一些基础知识
<!DOCTYPE html><html><head><meta charset="utf-8" /><title>页面 ...
- 【云计算】docker前世今生
下一代云计算模式:Docker正掀起个性化商业革命 作者: 吴宁川 来源: ITValue 发布时间: 2015-09-20 10:41 阅读: 12976 次 推荐: 24 ...
- smarty3.0中文手册文档API及使用指南
1.安装Smarty3.0一.什么是smarty?smarty是一个使用PHP写出来的模板PHP模板引擎,它提供了逻辑与外在内容的分离,简单的讲,目的就是要使用PHP程序员同美工分离,使用的程序员改变 ...
随机推荐
- SNRO:Number Range
业务对象是在一定的编号范围内分配编号的,编号既可以是内部分配也可以是外部分配.对于外部分配,用户输入编号,系统检查这个编号是否被占用.对于内部分配,系统会自动的把编号分配给业务对象.所以内部分配和外部 ...
- IOS数据解析JSON
//非原创 作为一种轻量级的数据交换格式,json正在逐步取代xml,成为网络数据的通用格式. 有的json代码格式比较混乱,可以使用此“http://www.bejson.com/”网站来进行JSO ...
- 8.samba server与client配置
server端 1.安装samba:yum install -y samba\* 增加samba用户: useradd smb用户名 smbpasswd -a smb用户名 ...
- Nginx +keepalived
Nginx +keepalived 配置高可用的Nginx 准备环境: 节点node17,node18 lftp 172.16.0.1:/pub/Sources/6.x86_64/nginx ...
- 用CSS实现Firefox 和IE 都支持的Alpha透明效果
有的时候,为了实现一些特殊效果,需要将页面元素变透明,本文介绍的就是用 CSS 实现 Firefox 和 IE 都支持的 Alpha 透明效果.CSS: filter:alpha(opacity=50 ...
- ClickOnce证书签名
打开Microsoft .NET Framework 的SDK命令提示,按以下步骤操作: 1.创建一个自我签署的X.509证书(.cer)和一个.pvk私钥文件,用到makecert工具,命令如下: ...
- IIS6下, web.config配置为targetFramework="4.0"时出404错误
打开IIS管理器,在"Web 服务扩展" 中 将ASP.NET v4.0设置为允许就好了.这个选项默认是禁止的.
- WCF全面解析第二章 地址(Adress)
2.1 统一资源标识(URL) 2.1.1 Http/Https 2.1.2 Net.TCP 2.1.3 Net.Pipe WCF只将命名管道专门用于同一台机器的跨进程通信. 2.1.4 Net.Ms ...
- 图解 CSS: 理解样式表的逻辑(转载)
原文:http://www.cnblogs.com/del/archive/2009/02/01/1382141.html 样式表可以是外部的.内联的或嵌入的; 链接外部样式文件一般是:<lin ...
- 1017. Queueing at Bank (25)
Suppose a bank has K windows open for service. There is a yellow line in front of the windows which ...