Şimdi Ara

Java JNA (Java Native Access) dll içindeki fonksiyonu çalıştırma

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir (1 Mobil) - 1 Masaüstü1 Mobil
5 sn
5
Cevap
0
Favori
994
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • Java projemde C#'ta kullandığım bir dll'in fonksiyonunu kullanmak istiyorum fakat dll'i tanıtmama rağmen içindeki fonksiyonu çağıramıyorum. Dll dosyasını kendim oluşturmadım fakat sorunsuz çalışıyor. Ayrıca kodlarını da görmeniz için ekliyorum.

    C#'ta şu kodu kullanarak fonksiyonu kullanabiliyorum
     
    InputSimulator.SimulateTextEntry("Yazdırmak istediğim");
    InputSimulator.SimulateKeyPress(VirtualKeyCode.VK_1); //Sorunum burda da var çünkü keycode gönderemiyorum javadan


    Java'da denediğim kod bloğu ise şu şekilde

     
    package javaapplication3;

    import com.sun.jna.Library;
    import com.sun.jna.Native;
    import java.lang.String;
    import java.io.IOException;

    public class JavaApplication3 {


    public interface WindowsInput extends Library {

    void SimulateTextEntry(String s);
    }

    public static void main(String[] args) throws IOException, InterruptedException {

    Thread.sleep(2000);
    WindowsInput ins = (WindowsInput) Native.loadLibrary("InputSimulator.dll", WindowsInput.class);
    ins.SimulateTextEntry("asdsad");

    }
    }


    Java'da aldığım hata (Anladığım kadarıyla fonksiyonu çağırabilmek için düzgün metodu kullanmıyorum);

     
    Exception in thread "main" java.lang.UnsatisfiedLinkError: Error looking up function 'SimulateTextEntry': Belirtilen yordam bulunamadı.

    at com.sun.jna.Function.<init>(Function.java:208)
    at com.sun.jna.NativeLibrary.getFunction(NativeLibrary.java:536)
    at com.sun.jna.NativeLibrary.getFunction(NativeLibrary.java:513)
    at com.sun.jna.NativeLibrary.getFunction(NativeLibrary.java:499)
    at com.sun.jna.Library$Handler.invoke(Library.java:199)
    at com.sun.proxy.$Proxy0.SimulateTextEntry(Unknown Source)
    at javaapplication3.JavaApplication3.main(JavaApplication3.java:20)
    Java Result: 1


    Kullandığım dll dosyası ve kodları için :

    http://inputsimulator.codeplex.com/

    http://inputsimulator.codeplex.com/SourceControl/latest#README.md







  • Oncelikle JNI kullanmadan once neden kullaniyorum diye bir sor kendine.
    Input Simulator denilen 3rd party bir kutuphane icin kullaniyorsun. Bunun da amaci windowsta mouse ve klavye yi taklit edebilmesi.
    Once baktin mi ki Java boyle birseyi destekliyor mu? Kendine has kutuphanesi var mi, veya cross-platform kutuphaneler var mi?
    Bak buraya istersen once:
    http://stackoverflow.com/questions/7745959/how-to-simulate-keyboard-presses-in-java
  • ThisisaNightmare T kullanıcısına yanıt
    Kısa kesmek için söyledim. Farkındayım Robot'tan fakat nedenini bilmediğim halde keypress özelliği bazı programlarda çalışmıyor. Yani anlayacağınız bu soruları sormuşum kendime
  • Nerde calismadigini cozmek bence JNI ile ugrasmaktan 1000 kat daha iyi bir cozum olur.

    < Bu ileti mobil sürüm kullanılarak atıldı >
  • Aslında durum şöyle
    java robot ile oluşturduğum program windows 7 home basic (64 bit)'te sorunsuz çalışıyor. Windows 7 32 bit ve windows 8 64 bitlerde ise çalışmıyor.

    //Çalışmıyor derken kastım. Etki etmek istediğim programa etki etmiyor.
    //robot sınıfını kullanarak genel bir tuşa basma olayı gönderiyorum. Yani c#'ta sendmessage özelliğindeki gibi belli bir programa göndermiyorum.
  • Yapay Zeka’dan İlgili Konular
    Daha Fazla Göster
    
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.