Alt + F,S在sendKeys C#中不起作用

时间:2015-04-09 12:00:00

标签: c# sendkeys simulate

我想保存并关闭所有打开的应用程序。从Process命令中识别特定应用程序。有了这个,我可以杀了它。

为了保存我尝试了SendKeys类,首先我设置了SetForegroundWindow(h),并使用

成功地使用 ctrl + s
SendKeys.Send("^s"); //Ctrl+s

但是,用户定义的应用程序在那里,我还有一种情况可以保存一个新的(不是现有的文件),必须通过 Alt + F + 取值 即可。 这样它就可以保存默认名称 我怎么做到这一点, 我试过了,

SendKeys.Send("%(fs)");
SendKeys.Send("%f"+"s"); //Alt+F 
SendKeys.Send("%f" + "%s)"); //Alt+F
SendKeys.Send("%fs"); 

请指导我,如果SendKeys不可能,我还应该尝试什么。

2 个答案:

答案 0 :(得分:2)

始终使用破坏,您可以避免错误。

SendKeys.Send("%{f}"); //Alt+F
SendKeys.Send("{A}"); //A

或尝试

SendKeys.Send("%{f}{A}"); //Alt+F And A

答案 1 :(得分:1)

什么APP? SendKeys将发送击键,但在引擎盖下,大多数东西都使用旧的消息循环。

SendMessage(hWnd, WM_SETTEXT, wParam, lParam);

C#

[DllImport("user32.dll")]    
public static extern IntPtr FindWindow(string lpClassName, String lpWindowName);    
[DllImport("user32.dll")]    
public static extern int SendMessage(IntPtr hWnd, int wMsg, IntPtr wParam, IntPtr lParam);    
[DllImport("user32.dll", SetLastError=true, CharSet=CharSet.Auto)]
static extern uint RegisterWindowMessage(string lpString);

IntPtr hwnd= FindWindow(null, "Window Title");    
SendMessage(hwnd, id, IntPtr.Zero, IntPtr.Zero);

要记事本保存它将是

const int WM_COMMAND = 0x111;     
SendMessage(hwnd, WM_COMMAND,777  , NULL);