में WINAPI का उपयोग करके संदेश बॉक्स के 'ओके' बटन पर क्लिक करें, मैं Winapi का उपयोग कर सी # विंडोज़ फॉर्म के संदेश बॉक्स पर 'ओके' बटन पर क्लिक करने की कोशिश कर रहा हूं। नीचे वह कोड है जिस पर मैं काम कर रहा हूं।सी #
private const int WM_CLOSE = 16;
private const int BN_CLICKED = 245;
[DllImport("user32.dll", CharSet=CharSet.Auto)]
public static extern int SendMessage(int hWnd, int msg, int wParam, IntPtr lParam);
[DllImport("user32.dll", SetLastError = true)]
public static extern IntPtr FindWindowEx(IntPtr parentHandle, IntPtr childAfter, string className, string windowTitle);
//this works
hwnd = FindWindow(null, "Message");
if(hwnd!=0)
SendMessage(hwnd, WM_CLOSE, 0, IntPtr.Zero);
//this doesn't work.
hwndChild = FindWindowEx((IntPtr)hwnd, IntPtr.Zero, "Button", "ok");
SendMessage((int)hwndChild, BN_CLICKED, 0, IntPtr.Zero);
हालांकि मैं hwndChild
में एक मूल्य मिलता है, यह BN_CLICKED
पहचान नहीं कर रहा। मुझे यकीन नहीं है कि मुझे क्या याद आ रही है। कोई मदद?
मैं किसी अन्य एप्लिकेशन के संदेश बॉक्स बटन को बंद करने का प्रयास कर रहा हूं और यही वह है जो मैं कर रहा हूं। लेकिन, मैं अभी भी कुछ याद कर रहा हूँ।
IntPtr hwndChild = IntPtr.Zero;
hwndChild = FindWindowEx((IntPtr)hwnd, IntPtr.Zero,' '"Button", "OK");
SendMessage((int)hwndChild, WM_COMMAND, (BN_CLICKED '<<16) | IDOK, hwndChild);
चूंकि आप सी # का उपयोग कर रहे हैं, तो आप 'System.Windows.Automation' नामस्थान का भी उपयोग कर सकते हैं। यहां एक उदाहरण दिया गया है [[कैलकुलेटर में "7" बटन दबाता है) (http://stackoverflow.com/questions/14108742/manipulating-the-simple-windows-calculator-using-win32-api-in-c/14111246#14111246)। बस "कैलकुलेटर" को "संदेश" और "7" में "ठीक" में बदलें। –