ערכתי לאחרונה בתאריך 18.06.10 בשעה 16:39 בברכה, ronen333
תשמע ניסתי לעשות את הOK דרך הWIN API וזה לא הצליח..
אני משתמש בPostMessage כדי לגלות שזה אכן דיאלוג בוקס עם הקבוע WM_COMMAND כפי שאמרת.
ואז הפעלתי את הEndDialog כפי שאתה השתמשת בקוד שלך..זה הקוד שכתבתי:
[DllImport("user32.dll", SetLastError = true)] static extern bool PostMessage(IntPtr hWnd, int Msg, IntPtr wParam, IntPtr lParam); [DllImport("user32.dll")] static extern bool EndDialog(IntPtr hDlg, IntPtr nResult);const int WM_COMMAND = 0x0111; public static void InvokeOKToTopWindow() { hWnd = GetForegroundWindow(); if (hWnd == IntPtr.Zero) throw new Exception("Couldn't find window!"); bool r = PostMessage(hWnd, WM_COMMAND, IntPtr.Zero, IntPtr.Zero); if (r) { EndDialog(hWnd, IntPtr.Zero); } }
|
וזה זורק לי אקספשן:
------------------------------------------------------ System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.AccessViolationException: Attempted to read or write protected memory. This is often an indication that other memory is corrupt. at SVR.Win32API.EndDialog(IntPtr hDlg, IntPtr nResult) at SVR.Win32API.InvokeOKToTopWindow() in C:\Users\Aviad\Documents\Visual Studio 2010\Projects\SVR\SVR\Classes\Win32API.cs:line 108
|
אשמח אם תסביר לי מה לא בסדר ואיך אני אמור לעשות את זה..
תודה רבה