कैसे स्थानांतरित करें (या कुछ भी करें) मैं जावा और जेएनए (जावा नेटिव एक्सेस) का उपयोग कर विंडोज एपीआई के साथ कैसे बातचीत कर सकता हूं, लेकिन सड़क-ब्लॉक पर हूं। मैं माउस इनपुट स्ट्रीम पर माउस इवेंट क्यूई करके माउस को कुछ करने की कोशिश कर रहा हूं, और कोड काम करता है, जिसमें SendInput(...)
विधि रिटर्न 1 सुझाव देता है कि उसने सफलतापूर्वक घटना को कतारबद्ध कर दिया है, लेकिन फिर भी माउस स्वयं कुछ भी नहीं करता है।माउस
मेरे SSCCE:
संपादित करें: dwFlags क्षेत्र में भरने के लिए संपादित। मैंने स्थिरता के कई संयोजनों को स्वयं या बिट-या सफलता के बिना संयुक्त करने की कोशिश की है। फिर, SendInput विधि देता है 1 के रूप में वह किसी कार्यशील विधि का सुझाव चाहिए, लेकिन माउस हिलना नहीं करता है:
import com.sun.jna.Native;
import com.sun.jna.platform.win32.WinDef.*;
import com.sun.jna.platform.win32.WinUser.*;
import com.sun.jna.win32.StdCallLibrary;
public class MouseUtils {
public interface User32 extends StdCallLibrary {
public static final long MOUSEEVENTF_MOVE = 0x0001L;
public static final long MOUSEEVENTF_VIRTUALDESK = 0x4000L;
public static final long MOUSEEVENTF_ABSOLUTE = 0x8000L;
User32 INSTANCE = (User32) Native.loadLibrary("user32", User32.class);
DWORD SendInput(DWORD dWord, INPUT[] input, int cbSize);
}
public static void main(String[] args) {
INPUT input = new INPUT();
input.type = new DWORD(INPUT.INPUT_MOUSE);
input.input.mi.dx = new LONG(500);
input.input.mi.dy = new LONG(500);
input.input.mi.mouseData = new DWORD(0);
input.input.mi.dwFlags = new DWORD(User32.MOUSEEVENTF_MOVE
| User32.MOUSEEVENTF_VIRTUALDESK | User32.MOUSEEVENTF_ABSOLUTE);
// input.input.mi.dwFlags = new DWORD(0x8000L);
input.input.mi.time = new DWORD(0);
INPUT[] inArray = {input};
int cbSize = input.size(); // mouse input struct size
DWORD nInputs = new DWORD(1); // number of inputs
DWORD result = User32.INSTANCE.SendInput(nInputs , inArray, cbSize);
System.out.println("result: " + result); // return 1 if the 1 event successfully inserted
}
}
संपादित करें 2:
अधिक पढ़ने करना, और ऐसा लगता है कि की मेरी समझ जेएनए के साथ सरणी कम है, मुझे सी सरणी के संदर्भ में सोचना है जहां एक सरणी बस संगत स्मृति के क्षेत्र में एक सूचक है। आने के लिए और (मुझे उम्मीद है!)।
Offtopic: यह हमेशा आप, अच्छा आरामदेह और लोगों के साथ दोस्ताना को देखने का एक खुशी है। आप उन लोगों में से एक हैं जिन्हें मैं वास्तव में यहां देखता हूं। छुट्टियां आनंददायक हों; और एक महान वर्ष 2017! – GhostCat
@GostCat: आपका पहला कथन कुछ हद तक मजाकिया है, लेकिन आपका दूसरा बहुत दयालु है। और मैं आप पर निर्भर करता हूं, आपकी क्षमताओं और दूसरों को अपना ज्ञान फैलाने की आपकी इच्छा। –