Jump to content

Sky Slate Blueberry Blackcurrant Watermelon Strawberry Orange Banana Apple Emerald Chocolate
Photo

autohotkey library in vb.net verwenden


  • Please log in to reply
27 replies to this topic
akka1
  • Members
  • 95 posts
  • Last active: Aug 22 2019 11:46 AM
  • Joined: 09 Aug 2013

das funktioniert :D

aber ich bekomme es irgendwie nicht wirklich hin bei anderen sachen

 

kannst du mir zeigen wie du das zb jetzt mit dem code machen würdest

SetTitleMatchMode, 2
Run, calc.exe
Sleep, 1000
WinGet, rid , ,Rechner, , , 
WinActivate, ahk_id %rid%
IfWinExist, ahk_id %rid%
{
	WinMove, ahk_id %rid%,, 0, 0, , 
}
MouseClick, left,  105,  184
Sleep, 100
MouseClick, left,  147,  215
Sleep, 100
MouseClick, left,  110,  185
Sleep, 100
MouseClick, left,  178,  263
Sleep, 100
msgbox, 81


HotKeyIt
  • Moderators
  • 7439 posts
  • Last active: Jun 22 2016 09:14 PM
  • Joined: 18 Jun 2008
Module Module1

    Sub Main()
        Dim ahk As Object
        ahk = CreateObject("AutoHotkey.Script")
        ahk.ahktextdll("SetTitleMatchMode, 2" & vbLf & _
                      "Run, calc.exe" & vbLf & _
                      "Sleep, 1000" & vbLf & _
                      "WinGet, rid , ,Rechner, , , " & vbLf & _
                      "WinActivate, ahk_id %rid%" & vbLf & _
                      "IfWinExist, ahk_id %rid%" & vbLf & _
                      "{" & vbCrLf & _
                      "	WinMove, ahk_id %rid%,, 0, 0, , " & vbLf & _
                      "}" & vbLf & _
                      "MouseClick, left,  105,  184" & vbLf & _
                      "Sleep, 100" & vbLf & _
                      "MouseClick, left,  147,  215" & vbLf & _
                      "Sleep, 100" & vbLf & _
                      "MouseClick, left,  110,  185" & vbLf & _
                      "Sleep, 100" & vbLf & _
                      "MouseClick, left,  178,  263" & vbLf & _
                      "Sleep, 100" & vbLf & _
                      "msgbox, 81")
        MsgBox("ende")
    End Sub

End Module


akka1
  • Members
  • 95 posts
  • Last active: Aug 22 2019 11:46 AM
  • Joined: 09 Aug 2013

wow respect

klappt perfekt , dank dem beispiel verstehe ichs jetzt endlich xD

 

vll kannst du mir das & vbLf & _ und & vbCrLf & _ noch erklähren

das heisst doch nur er soll in die nächste zeile oder sowas ?

 

und noch eine frage muss nach dem compilen die AutoHotkey.dll dann im ordner sein damit es klappt ?



HotKeyIt
  • Moderators
  • 7439 posts
  • Last active: Jun 22 2016 09:14 PM
  • Joined: 18 Jun 2008

vbLf steht für neue Zeile (`n in ahk).

Die AutoHotkey.dll muss registriert sein sonst klappt CreateObject nicht. 



HotKeyIt
  • Moderators
  • 7439 posts
  • Last active: Jun 22 2016 09:14 PM
  • Joined: 18 Jun 2008

Hier ist ein Beispiel ohne COM, dann muss auch nichts registriert werden, zum compilieren muss AutoHotkey.dll im selben Ordner oder z.b. in c:\windows\system32\AutoHotkey.dll sein:

Imports System.Runtime.InteropServices
Module Module1
    ' Use DllImport to import the ahktextdll function.
    <DllImport("AutoHotkey.dll", CallingConvention:=CallingConvention.Cdecl, CharSet:=CharSet.Unicode)> _
    Function ahktextdll(ByVal script As String, ByVal options As String, ByVal param As String) As Integer
    End Function
    Sub Main()
        Dim n = vbLf
        Dim script = "SetTitleMatchMode, 2" & n & _
                      "Run, calc.exe" & n & _
                      "Sleep, 1000" & n & _
                      "WinGet, rid , ,Rechner, , , " & n & _
                      "WinActivate, ahk_id %rid%" & n & _
                      "IfWinExist, ahk_id %rid%" & n & _
                      "{" & n & _
                      "	WinMove, ahk_id %rid%,, 0, 0, , " & n & _
                      "}" & n & _
                      "MouseClick, left,  105,  184" & n & _
                      "Sleep, 100" & vbCrLf & _
                      "MouseClick, left,  147,  215" & n & _
                      "Sleep, 100" & vbCrLf & _
                      "MouseClick, left,  110,  185" & n & _
                      "Sleep, 100" & vbCrLf & _
                      "MouseClick, left,  178,  263" & n & _
                      "Sleep, 100" & n & _
                      "msgbox, 81"
        ahktextdll(script,"","")
        MsgBox("ende")
    End Sub

End Module


akka1
  • Members
  • 95 posts
  • Last active: Aug 22 2019 11:46 AM
  • Joined: 09 Aug 2013

sieht gut aus , aber leider bekomme ich einen fehler bei ahktextdll(script"","")

 

ca452a345af520dc2e72d8f50e3301ea.png



HotKeyIt
  • Moderators
  • 7439 posts
  • Last active: Jun 22 2016 09:14 PM
  • Joined: 18 Jun 2008

Mein Fehler, darauf hättest du aber selbst kommen können :)

ahktextdll(script,"","")


akka1
  • Members
  • 95 posts
  • Last active: Aug 22 2019 11:46 AM
  • Joined: 09 Aug 2013

Hi HotKeyIt

ich habe versucht deinen vb.net code in c# zu convertieren leider vergeblich

da du der experte beim AutoHotkey.dll importieren bist hoffe ich kannst du mir ein weiteres mal helfen :D

 

anbei ein testcode von mir der aber leider so nicht läuft

hoffe du bringst das irgendwie zum laufen

besten dank

using System.Runtime.InteropServices;
class Module1
{

    //  Use DllImport to import the ahktextdll function.
    [DllImport("AutoHotkey.dll", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Unicode)]
    static int ahktextdll(string script, string options, string param)
    {
    }

    static void Main()
    {
        object n = "\n";
        object script = ("SetTitleMatchMode, 2"
                    + (n + ("Run, calc.exe"
                    + (n + ("Sleep, 1000"
                    + (n + ("WinGet, rid , ,Rechner, , , "
                    + (n + ("WinActivate, ahk_id %rid%"
                    + (n + ("IfWinExist, ahk_id %rid%"
                    + (n + ("{"
                    + (n + ("\tWinMove, ahk_id %rid%,, 0, 0, , "
                    + (n + ("}"
                    + (n + ("MouseClick, left,  105,  184"
                    + (n + ("Sleep, 100" + ("\r\n" + ("MouseClick, left,  147,  215"
                    + (n + ("Sleep, 100" + ("\r\n" + ("MouseClick, left,  110,  185"
                    + (n + ("Sleep, 100" + ("\r\n" + ("MouseClick, left,  178,  263"
                    + (n + ("Sleep, 100"
                    + (n + "msgbox, 81"))))))))))))))))))))))))))))))))));
        ahktextdll(script, "", "");
        MsgBox("ende");
    }
}


HotKeyIt
  • Moderators
  • 7439 posts
  • Last active: Jun 22 2016 09:14 PM
  • Joined: 18 Jun 2008
using System;
using System.Diagnostics;
using System.Threading;
using System.Runtime.InteropServices;

class Module1
{

    //  Use DllImport to import the ahktextdll function.
    [DllImport("f:\\AutoHotkey.dll", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Unicode)]
    static extern int ahktextdll(string script, string options, string param);
    [DllImport("f:\\AutoHotkey.dll", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Unicode)]
    static extern int ahkReady();

    static void Main()
    {
        string n = "\n";
        string script = ("SetTitleMatchMode, 2"
                    + (n + ("Run, calc.exe"
                    + (n + ("Sleep, 1000"
                    + (n + ("WinGet, rid , ,Rechner, , , "
                    + (n + ("WinActivate, ahk_id %rid%"
                    + (n + ("IfWinExist, ahk_id %rid%"
                    + (n + ("{"
                    + (n + ("\tWinMove, ahk_id %rid%,, 0, 0, , "
                    + (n + ("}"
                    + (n + ("MouseClick, left,  105,  184"
                    + (n + ("Sleep, 100" + ("\r\n" + ("MouseClick, left,  147,  215"
                    + (n + ("Sleep, 100" + ("\r\n" + ("MouseClick, left,  110,  185"
                    + (n + ("Sleep, 100" + ("\r\n" + ("MouseClick, left,  178,  263"
                    + (n + ("Sleep, 100"
                    + (n + "msgbox, 81"))))))))))))))))))))))))))))))))));
        int handle = ahktextdll(script, "", "");
        while (1 == ahkReady())
            Thread.Sleep(100);
    }
}


akka1
  • Members
  • 95 posts
  • Last active: Aug 22 2019 11:46 AM
  • Joined: 09 Aug 2013

vielen danke das klappt super :D

 

eine sache noch wie würdest du hotkeys einbinden , hab da schon paar versuche gemacht leider stürzt die form beim ausführen der hotkeys immer ab

 

hab das zb so getestet

  private void button1_Click(object sender, EventArgs e)
        {
            string n = "\n";
            string script = ("a::"
                     + (n + ("{"
                     + (n + ("Run Notepad"
                     + (n + ("}"
                     + (n + ("return")))))))));
            int handle = ahktextdll(script, "", "");
            while (1 == ahkReady())
                Thread.Sleep(100)
}

nachtrag : wenn man das  while (1 == ahkReady()) einfach weglässt crast die form nicht mehr



HotKeyIt
  • Moderators
  • 7439 posts
  • Last active: Jun 22 2016 09:14 PM
  • Joined: 18 Jun 2008

Funktioniert einwandfrei hier. Warum hast du kein ; nach Thread.Sleep(100)?

using System;
using System.Diagnostics;
using System.Threading;
using System.Runtime.InteropServices;

class Module1
{

    //  Use DllImport to import the ahktextdll function.
    [DllImport("f:\\AutoHotkey.dll", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Unicode)]
    static extern int ahktextdll(string script, string options, string param);
    [DllImport("f:\\AutoHotkey.dll", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Unicode)]
    static extern int ahkReady();

    static void Main()
    {
        string n = "\n";
            string script = ("a::"
                     + (n + ("{"
                     + (n + ("Run Notepad"
                     + (n + ("}"
                     + (n + ("return")))))))));
            int handle = ahktextdll(script, "", "");
            while (1 == ahkReady())
                Thread.Sleep(100);
    }
}


akka1
  • Members
  • 95 posts
  • Last active: Aug 22 2019 11:46 AM
  • Joined: 09 Aug 2013

; nach Thread.Sleep(100)hatte ich schon drin daran lags nicht

 

wenn ich while (1 == ahkReady()) einfüge freezt meine form , ich lass es einfach weg und es geht problemlos , warum auch immer :D



HotKeyIt
  • Moderators
  • 7439 posts
  • Last active: Jun 22 2016 09:14 PM
  • Joined: 18 Jun 2008

Ah ok, Thread.Sleep(100) wird der Grund sein.