_mojitaba_
پنج شنبه 26 آذر 1394, 00:27 صبح
سلام
من قصد نوشتن برنامه ای رو دارم که بتونه یک برنامه دیگر رو کنترل کنه
مثلا برنامه notpad ویندوز رو بتونم منوهاش رو باز کنم و یک گزینه رو انتخاب کنم
با کتابخانه JNA و با استفاده از توابع خود ویندوز تونستم برنامه مورد نظرم رو پیدا کنم
اما در کلیک کردن و ... دچار مشکل هستم
این کدی هست که باهاش کار رو انجام میدم
public static interface User32 extends StdCallLibrary {
final User32 instance = (User32) Native.loadLibrary ("user32", User32.class);
HWND FindWindowA(String winClass, String title);
HWND FindWindowExA(HWND hwndParent, HWND hwndChildAfter, String lpClassName ,String lpWindowName);
boolean ShowWindow(HWND hWnd, int nCmdShow);
boolean SetForegroundWindow(HWND hWnd);
int SendMessageA(HWND hWnd, int msg, int num1, int num2);
}
public static void main(String[] args) {
HWND hwnd = User32.instance.FindWindowA(null, "Untitled - Notepad");
User32.instance.ShowWindow(hwnd, 9);
User32.instance.SetForegroundWindow(hwnd);
HWND Ntpd = User32.instance.FindWindowExA(hwnd, null, "Edit",null);
User32.instance.SendMessageA(Ntpd, 0x0204, 0, 0);
}
وقتی که مقدار Ntpd رو چاپ میگیرم null بر میگردونه! چرا؟
کجای کار اشکال داره؟
من قصد نوشتن برنامه ای رو دارم که بتونه یک برنامه دیگر رو کنترل کنه
مثلا برنامه notpad ویندوز رو بتونم منوهاش رو باز کنم و یک گزینه رو انتخاب کنم
با کتابخانه JNA و با استفاده از توابع خود ویندوز تونستم برنامه مورد نظرم رو پیدا کنم
اما در کلیک کردن و ... دچار مشکل هستم
این کدی هست که باهاش کار رو انجام میدم
public static interface User32 extends StdCallLibrary {
final User32 instance = (User32) Native.loadLibrary ("user32", User32.class);
HWND FindWindowA(String winClass, String title);
HWND FindWindowExA(HWND hwndParent, HWND hwndChildAfter, String lpClassName ,String lpWindowName);
boolean ShowWindow(HWND hWnd, int nCmdShow);
boolean SetForegroundWindow(HWND hWnd);
int SendMessageA(HWND hWnd, int msg, int num1, int num2);
}
public static void main(String[] args) {
HWND hwnd = User32.instance.FindWindowA(null, "Untitled - Notepad");
User32.instance.ShowWindow(hwnd, 9);
User32.instance.SetForegroundWindow(hwnd);
HWND Ntpd = User32.instance.FindWindowExA(hwnd, null, "Edit",null);
User32.instance.SendMessageA(Ntpd, 0x0204, 0, 0);
}
وقتی که مقدار Ntpd رو چاپ میگیرم null بر میگردونه! چرا؟
کجای کار اشکال داره؟