【发布时间】:2012-10-17 00:53:45
【问题描述】:
显然我不能终止给定的进程,当它的主窗口被隐藏时(“最小化到托盘”)。所以我尝试在其他进程的 FormClosing 处理程序中再次显示窗口。也没用。
现在我想使用 ShowWindow
IntPtr Handle = Gateway->MainWindowHandle;
ShowWindow((HWND)Handle.ToPointer(), SW_SHOWDEFAULT);
不幸的是产生了
error LNK2028: Nicht aufgelöstes Token (0A000072) ""extern "C" int __stdcall ShowWindow(struct HWND__ *,int)" (?ShowWindow@@$$J18YGHPAUHWND__@@H@Z)", auf das in Funktion ""private: void __clrcall lidarctrl::Form1::Form1_FormClosing(class System::Object ^,class System::Windows::Forms::FormClosingEventArgs ^)" (?Form1_FormClosing@Form1@lidarctrl@@$$FA$AAMXP$AAVObject@System@@P$AAVFormClosingEventArgs@Forms@Windows@4@@Z)" verwiesen wird.
error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""extern "C" int __stdcall ShowWindow(struct HWND__ *,int)" (?ShowWindow@@$$J18YGHPAUHWND__@@H@Z)" in Funktion ""private: void __clrcall lidarctrl::Form1::Form1_FormClosing(class System::Object ^,class System::Windows::Forms::FormClosingEventArgs ^)" (?Form1_FormClosing@Form1@lidarctrl@@$$FA$AAMXP$AAVObject@System@@P$AAVFormClosingEventArgs@Forms@Windows@4@@Z)".
抱歉 - 德语错误;不知道如何更改编译器的语言环境。
Non resolved Token...in function...referenced by...
Reference to non-resolved extern symbol...in function...
感谢任何关于要包含哪个标头、要加载的库的提示。
我正在使用 Microsoft Visual C++ 2010 Express;该项目是一个普通的 Windows 窗体应用程序。
谢谢!
【问题讨论】:
-
您可以使用隐藏/最小化/任何窗口终止进程。也许你需要从解释是什么阻止你这样做开始。
-
同意罗曼;只需向隐藏的应用程序发送
WM_CLOSE消息。 -
我正在使用
GetProcessesByName来获取我的其他进程(网关)。Gateway->CloseMainWindow(); Gateway->WaitForExit(100);只有在主窗口可见时才会杀死它。否则,其他进程将继续运行。 -
@MSalters,
SendMessage((HWND)Handle.ToPointer(), WM_CLOSE, 0, 0);产生与上述相同的错误消息(将 ShowWindow 替换为 SendMessage)。 -
@PaulWilhelm:您有链接错误,这意味着您无法将所有内容整合到您的应用程序中。看起来它首先不是 C++,但您将要使用的 API 仍然是本机 Win32。这将您的问题带到了 API 工作的实际不同空间,并且有很多方法可以将关闭请求传递给应用程序,但是您只需要从能够构建代码开始......
标签: c++ window terminate showwindow