2014年1月12日 星期日

WinExec 模擬cmd 開啟執行命令

//#define SW_HIDE 0 //隐藏窗口,活动状态给令一个窗口
//#define SW_SHOWNORMAL 1 //用原来的大小和位置显示一个窗口,同时令其进入活动状态
//#define SW_NORMAL 1
//#define SW_SHOWMINIMIZED 2
//#define SW_SHOWMAXIMIZED 3
//#define SW_MAXIMIZE 3
//#define SW_SHOWNOACTIVATE 4 //
用最近的大小和位置显示一个窗口,同时不改变活动窗口
//#define SW_SHOW 5 //用当前的大小和位置显示一个窗口,同时令其进入活动状态
//#define SW_MINIMIZE 6 //最小化窗口,活动状态给令一个窗口
//#define SW_SHOWMINNOACTIVE 7 //最小化一个窗口,同时不改变活动窗口
//#define SW_SHOWNA 8 //用当前的大小和位置显示一个窗口,不改变活动窗口
//#define SW_RESTORE 9 //与 SW_SHOWNORMAL 1 相同
//#define SW_SHOWDEFAULT 10
//#define SW_FORCEMINIMIZE 11
//#define SW_MAX 
11

[
DllImport("kernel32.dll")]
public static extern 
int WinExec(string exeNameint operType);

WinExec(@"C:\WINDOWS\system32\cmd.exe",5);
-----------------------------------------------------------------------------------------
[DllImport("user32.dll", SetLastError = true ,EntryPoint = "PostMessageA")]
        public static extern bool PostMessage1(IntPtr hWnd, [MarshalAs(UnmanagedType.U4)] uint Msg, int wParam, int lParam);       
        [DllImport("user32.dll", SetLastError = true , EntryPoint = "PostMessageA")]
        public static extern bool PostMessage1(IntPtr hWnd, [MarshalAs(UnmanagedType.U4)] uint Msg, IntPtr wParam, IntPtr lParam);
         public void msg_sendkey(IntPtr cmdHandle, string msg)
        {
                uint WM_KEYDOWN = 0x0100;
                uint WM_KEYUP = 0x0101;
                uint WM_CHAR = 0x0102;
                uint wparam = 0 << 29 | 0;
                int i = 0;
               
                for (i = 0; i < msg.Length; i++)
                {
                    Win32API.PostMessage1(cmdHandle, WM_CHAR, msg[i], 0);
                }
                Win32API.PostMessage1(cmdHandle, WM_KEYDOWN, (IntPtr)Keys.Enter, (IntPtr)wparam);
           
      }



沒有留言:

[c#] process 使用方法

寫法1. Process proc = new Process(); / /PowerShell.exe path proc.StartInfo.FileName = @"c:\Windows\System32\ WindowsPowerShell\v1.0\ powe...