Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Winapi 使用Ironpython和ctypes终止应用程序_Winapi_Ironpython_Ctypes_Pywin32 - Fatal编程技术网

Winapi 使用Ironpython和ctypes终止应用程序

Winapi 使用Ironpython和ctypes终止应用程序,winapi,ironpython,ctypes,pywin32,Winapi,Ironpython,Ctypes,Pywin32,我正在从具有嵌入式Ironpython外壳的Windows应用程序执行Ironpython脚本。我可以启动应用程序,加载脚本并从(.bat)文件开始执行。我想在测试脚本完成后关闭应用程序。但是,应用程序供应商没有提供以编程方式关闭应用程序的功能 我的第一个想法是使用管道来监视将终止子流程的特定字符串。我的测试脚本打开了一个表单,其中填充了测试所需的数据。还有其他一些复杂的问题,我不知道如何处理打印到管道上。任何打印都直接进入应用程序的shell窗口 我采用的方法是通过激活应用程序的窗口来关闭应用

我正在从具有嵌入式Ironpython外壳的Windows应用程序执行Ironpython脚本。我可以启动应用程序,加载脚本并从(.bat)文件开始执行。我想在测试脚本完成后关闭应用程序。但是,应用程序供应商没有提供以编程方式关闭应用程序的功能

我的第一个想法是使用管道来监视将终止子流程的特定字符串。我的测试脚本打开了一个表单,其中填充了测试所需的数据。还有其他一些复杂的问题,我不知道如何处理打印到管道上。任何打印都直接进入应用程序的shell窗口

我采用的方法是通过激活应用程序的窗口来关闭应用程序。下面是我基于

我发现了另一个关于关闭应用程序的讨论(我认为使用pywin32扩展)。作者参考了win32process和win32gui。这些模块是否具有等效的ctypes

我在代码中添加了以下行

SendMessage = ctypes.windll.user32.SendMessageW
WM_SYSCOMMAND = ctypes.c_int(0x0112)
SC_CLOSE = ctypes.c_int(0xF060) 
替换线

ctypes.windll.user32.PostMessage(self._handle, win32con.WM_CLOSE, 0, 0)

只要我在一个单独的IronPython shell中执行这个脚本,它就可以工作

taskkill成功了,明白吗


您尚未为这些函数(
GetWindowText.argtypes=…
)定义
argtypes
restypes
),请稍候。。。如果您试图通过文本查找窗口,为什么不使用
FindWindow
ctypes.windll.user32.PostMessage(self._handle, win32con.WM_CLOSE, 0, 0)
SendMessage(my_window,  WM_SYSCOMMAND, SC_CLOSE, 0)