c# 嵌入一个外部程序 如何让这个外部程序启动时,窗口就最大化
我的项目中有form1有个panel打开外部程序a.exe到panel中如何让a.exe的窗口一打开就最大化另我点了a.exe程序的窗口最小化后a.exe程序就找不到了我...
我的项目中有form1 有个panel 打开外部程序a.exe到panel中 如何让a.exe的窗口一打开就最大化
另我点了a.exe程序的窗口最小化后 a.exe程序就找不到了 我想在form1中增加同a.exe专门绑定的最小 还原 最大 关闭 4个按钮 用来专门操作程序a.exe窗口该如何做
谢!
请给出代码 主要是最大化按钮 其它按钮还可在a.exe程序窗口中按 就是最小化后程序再无法最大化了 展开
另我点了a.exe程序的窗口最小化后 a.exe程序就找不到了 我想在form1中增加同a.exe专门绑定的最小 还原 最大 关闭 4个按钮 用来专门操作程序a.exe窗口该如何做
谢!
请给出代码 主要是最大化按钮 其它按钮还可在a.exe程序窗口中按 就是最小化后程序再无法最大化了 展开
1个回答
2015-07-29
展开全部
在你的class中加入:
[DllImport("user32.dll", EntryPoint = "FindWindow", SetLastError = true)]
private static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
[DllImport("user32.dll", EntryPoint = "FindWindowEx", SetLastError = true)]
private static extern IntPtr FindWindowEx(IntPtr hwndParent, uint hwndChildAfter, string lpszClass, string lpszWindow);
[DllImport("user32.dll", EntryPoint = "SendMessage", SetLastError = true, CharSet = CharSet.Auto)]
private static extern int SendMessage(IntPtr hwnd, uint wMsg, int wParam, int lParam);
[DllImport("user32.dll", EntryPoint = "SetForegroundWindow", SetLastError = true)]
private static extern void SetForegroundWindow(IntPtr hwnd);
const int WM_SYSCOMMAND = 0x0112;
const int SC_CLOSE = 0xF060;
const int SC_MINIMIZE = 0xF020;
const int SC_MAXIMIZE = 0xF030;
在启动代码中加入
IntPtr mainHandle = FindWindow("a.exe main window class name", "a.exe main window name");
if (mainHandle != null)
{
SetForegroundWindow(mainHandle);
SendMessage(mainHandle, WM_SYSCOMMAND, SC_MAXIMIZE, 0); // 最大化
}
可以用Visual studio提供的spy,找到你a.exe程序的主窗口的类名称和窗口名称。
[DllImport("user32.dll", EntryPoint = "FindWindow", SetLastError = true)]
private static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
[DllImport("user32.dll", EntryPoint = "FindWindowEx", SetLastError = true)]
private static extern IntPtr FindWindowEx(IntPtr hwndParent, uint hwndChildAfter, string lpszClass, string lpszWindow);
[DllImport("user32.dll", EntryPoint = "SendMessage", SetLastError = true, CharSet = CharSet.Auto)]
private static extern int SendMessage(IntPtr hwnd, uint wMsg, int wParam, int lParam);
[DllImport("user32.dll", EntryPoint = "SetForegroundWindow", SetLastError = true)]
private static extern void SetForegroundWindow(IntPtr hwnd);
const int WM_SYSCOMMAND = 0x0112;
const int SC_CLOSE = 0xF060;
const int SC_MINIMIZE = 0xF020;
const int SC_MAXIMIZE = 0xF030;
在启动代码中加入
IntPtr mainHandle = FindWindow("a.exe main window class name", "a.exe main window name");
if (mainHandle != null)
{
SetForegroundWindow(mainHandle);
SendMessage(mainHandle, WM_SYSCOMMAND, SC_MAXIMIZE, 0); // 最大化
}
可以用Visual studio提供的spy,找到你a.exe程序的主窗口的类名称和窗口名称。
追问
下面那个spy也很重要呀 我是菜鸟 能给个现成的代码吗
分还是给你 谢谢热心回答
追答
spy是visual studio提供的工具,你可以在它的安装目录中找到的。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询