1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. Neklor

Beiträge von Neklor

  • Ein COM Objekt aus einer nicht registrierten DLL verwenden?

    • Neklor
    • 22. März 2013 um 22:56

    Hmm ok, das geht natürlich auch, ich sehe das hier dann mal als gelöst an :)

  • Ein COM Objekt aus einer nicht registrierten DLL verwenden?

    • Neklor
    • 22. März 2013 um 22:40

    Ja regsvr32 funktioniert natürlich, habe ich schon getestet. Ich habe es jetzt auch nochmal mit einem anderen Pfad probiert, das klappt offenbar auch. ;)
    Mich würde jetzt aber trotzdem interessieren ob ich die registrieren muss?

    Wenns nicht möglich ist, ist das OK. Ich wollte nur unnötige Arbeit vermeiden. Wenn ich das Proramm irgendwann kostenlos zur verfügung stelle, dann soll es ja auf möglichst vielen Systemen Problemlos funktionieren. Also muss ich z.B. Prüfen ob die DLL schon registriert ist, wenn nicht muss ich das durchführen mittels regsvr32. Dann braucht mein Programm aber auch Admin Rechte. Außerdem ist dann ja noch die frage welches regsvr32 ich brauche, dass aus dem syswow64 oder dem System32 ordner und wovon hängt das ab? Davon ob meine dll 64bit ist oder ob mein Programm 64bit ist?

    Naja, jedenfalls weiss ich jetzt das es funktionieren würde, weshalb ich jetzt mit dem eigentlichen Programm anfangen kann. Falls doch noch jemand weiss ob und wie es evtl. ohne regsvr geht, dann wäre ich über eine Antwort dankbar. Das erspart mir dann viel Zeit, um das ganze mit jedem Windows kompatibel zu machen ;)

  • Ein COM Objekt aus einer nicht registrierten DLL verwenden?

    • Neklor
    • 22. März 2013 um 17:58

    Hi,
    für eines meiner Scripte, benötige ich eine funktion um die Dateidetails zu ändern. Ich habe mir eine DLL von Microsoft runtergeladen in der ich die benötigten funktionen gefunden habe. Mein Problem: Es sind COM funktionen.
    Wie kann ich diese funktionen nutzen ohne die DLL zu registrieren? Geht das überhaupt?

    Ich habe mal verucht folgendes VB Script in AutoIt zu übersetzen (funktioniert nur mit registrierter DLL):

    Code
    Set oFile = CreateObject("DSOFile.OleDocumentProperties")
    oFile.Open("c:\tmp\test.txt")
    oFile.SummaryProperties.Comments = "Test Comment"
    oFile.Save
    oFile.Close

    Mein Script:

    [autoit]


    $dll = DllOpen("dsofile.dll")
    $oFile = ObjCreate("DSOFile.OleDocumentProperties")
    If Not @error Then
    MsgBox(4096, "ObjCreate Test", "ObjCreate() of a DSO File Object successful !")
    Else
    MsgBox(4096, "ObjCreate Test", "Failed to create Object. Error code: " & Hex(@error, 8))
    EndIf
    DllClose($dll)
    Exit

    [/autoit]

    Wenn ich das Script ausführe, bekomme ich den Fehlercode: 800401F3
    Das bedeutet wohl so viel wie: Objekt nicht gefunden

    Kann ich die funktion eventuell per dllcall aufrufen?

    Wenn das geht, wie mache ich das? Ich habe nicht viel Ahnung von dllcall und Objekten.

    Ich hbae mit dem DLL Export Viewer, einige für mich wichtige funktionen ausgelesen:
    Function names:

    _OleDocumentProperties::Close
    _OleDocumentProperties::CLSID
    _OleDocumentProperties::IsOleFile
    _OleDocumentProperties::Open
    _OleDocumentProperties::Save
    CustomProperties::Add
    CustomProperty::Remove
    SummaryProperties::Comments

    Weiss jemand ob und wie ich das realisieren kann?
    Muss ich die DLL tatsächlich registrieren? Wenn ja, muss die zwingend ins System32 verzeichnis?

  • _Fileprint unter Windows 7

    • Neklor
    • 11. November 2011 um 23:22

    Hmm sehr komischer Fehler.

    Probier es mal mit dieser Funktion, da wird die IE Druckfunktion verwendet:

    [autoit]

    Func PrintFile($PrintThisFile)
    RunWait(@ComSpec & ' /c rundll32.exe ' & @SystemDir & '\mshtml.dll,PrintHTML "' & $PrintThisFile, @TempDir, @SW_HIDE)
    EndFunc

    [/autoit]
  • Registerkarte (Tabbed Panal) transparent amchen?

    • Neklor
    • 11. November 2011 um 21:48

    Also ich mache ganze Fenster Transparent, das lässt sich sicher auch auf einen Tab anwenden. ;)

    [autoit]


    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <GUIConstants.au3>
    $form1 = GUICreate("Newsticker", 530, 55, 0, 0,0x80000000,BitOR(0x00080000,0x00000008)) ;Muss nicht so gemacht werden, behebt aber bei mir einige Probleme mit der Transparenz
    GUISetBkColor (0xFFFFFF,$form1) ; Hintergrundfarbe weiss
    DllCall("user32.dll", "int", "SetLayeredWindowAttributes", "hwnd", $form1, "long", 0xFFFFFF, "byte", 255, "long",True) ;macht die Farbe weiss unsichtbar, welche hier der Hintergrund ist.
    $font = "Comic Sans MS"
    GUISetFont(9, 600, 0, $font)
    GUICtrlSetDefColor(0x996666)
    $lbl_1 = GUICtrlCreateLabel("Das ist ein nicht sehr langer Test Text:", 8, 16, Default, Default)
    $inp_2 = GUICtrlCreateLabel(0, 70, 16, 25, Default)
    GUISetState(@SW_SHOW)

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit

    [/autoit][autoit][/autoit][autoit]

    EndSwitch
    WEnd

    [/autoit]

    Edit2: Hier nochmal ein funktionierendes Beispiel, der Text erscheint oben links. 8)

  • Überprüfen ob der Knopf am Bluetooth Headset gedrückt wurde...

    • Neklor
    • 11. November 2011 um 21:23

    So. ich habe jetzt etwas gesucht und bin mir nicht sicher ob Windows überhaupt die möglichkeit hat den Knopf zu erkennen, eventuell macht das ja nur der Treiber. Die einzige dll die ich finden konnte, in der Funktionen für Bluetooth sind, die vom namen passen könnten, ist die bthpanapi.dll

    Leider sind da scheinbar nur irgendwelche Bluetooth Netzwerk funktionen drinne. :(

    Ich vermute mal ich muss da beim Treiber ansetzen.

    Man kann sich von Broadcom ein BTW SDK anfordern: http://www.broadcom.com/support/bluetooth/sdk.php (Keine Ahnung wie ich das dann verwenden muss...)

    Macht das sinn? Oder würde mir das bei meinem Problem nicht helfen und ich bin grad auf dem Holzweg?

  • Überprüfen ob der Knopf am Bluetooth Headset gedrückt wurde...

    • Neklor
    • 9. November 2011 um 13:01

    Hallo,

    ich verwende zu unserer Telefonanlage den SwyxIt Telefon Client. dazu habe ich ein Bluetooth Headset (Sennheiser EZX60) das eigentlich wunderbar mit Skype und co funktioniert. Nur eben leider nicht Vollständig mit der SwyxIt Software, d.h. es wird nicht erkannt wenn ich den Knopf für die gesprächsannahme drücke. Laut Support halt nicht unterstützt...

    Nun möchte ich mir ein Script schreiben was diese Funktion ergänzt.
    Den Teil für das Annehmen und Auflegen von gesprächen in der Software habe ich schon erstellt, allerdings weiss ich nicht wie ich rausfinde ob der Knopf gedrückt wurde.
    Ich vermute ich brauche da eine DLL funktion, aber mit dllcall kenn ich mich nicht gut aus. Um an die Funktionen zu kommen, habe ich mir schon dependency walker besorgt (k.a. ob die software gut dafür ist).
    Weiss jemand in welcher DLL die Funktionen Stecken oder wie man das macht?

    OS: Windows 7 Pro 32bit und 64bit
    Treiber BT: Bluetooth_Broadcom_6.2.0.8000

    Funktionierender Code für die Software:

    [autoit]


    Dim $PhoneLineMgr
    Dim $PhoneLineFocus
    Dim $errval $PhoneLineMgr = ObjCreate("CLMgr.ClientLineMgr")
    $PhoneLineFocus = $PhoneLineMgr.DispSelectedLine
    $PhoneLineFocus.DispHookOff

    [/autoit]
  • Ausgab in bestehendes cmd Fenster

    • Neklor
    • 18. März 2010 um 19:16
    Zitat von Neklor

    Ich habe mein Script schon als CUI statt GUI kompiliert und es mit "ConsoleWrite" versucht, aber wenn ich mit "ConsoleWrite" versuche Befehle auszuführen klappt das nicht.


    Das habe ich ja schon probiert, ich wollte dann mal testweise eine variable setzen, aber wie mache ich das? Auch mit Run('set var=test')? Ich hatte mit console write immer das Problem, das nichts in der variable stand...
    So hier mal der Batch code:

    Code
    test5.exe /wait
    
    
    echo %testvar1%
    
    
    pause
    exit

    Und was man in Autoit machen könnte, geht so natürlich nicht...

    [autoit]

    Run("set testvar1=Das ist ein Test")
    EXIT (1)

    [/autoit]

    Als CUI kompiliere ich sowieso schon die ganze zeit ;)

    EDIT:
    Der Code hier ist realistischer, geht aber auch nicht

    [autoit]

    #include <Process.au3>
    _RunDos("set testvar1=Das ist ein Test")
    EXIT (1)

    [/autoit]
  • Ausgab in bestehendes cmd Fenster

    • Neklor
    • 18. März 2010 um 18:26

    Nein, also mit Send möchte ich auf nem Server ungern Arbeiten ;)

  • Ausgab in bestehendes cmd Fenster

    • Neklor
    • 18. März 2010 um 18:05

    Hallo,
    ich habe eine Batchdatei, die ein Autoit script startet. Ich habe nun aber das Problem, das ich gerne was in das geöffnete cmd Fenster ausgeben, bzw. noch wichtiger ausführen möchte.
    Ich habe mein Script schon als CUI statt GUI kompiliert und es mit "ConsoleWrite" versucht, aber wenn ich mit "ConsoleWrite" versuche Befehle auszuführen klappt das nicht.
    So z.b. bei set var1=das ist ein test
    Arbeite ich mit "_RunDos" oder "Function Run Run(@ComSpec & " /c " & 'commandName', "", @SW_HIDE)" habe ich das Problem, das ja immer ein neues cmd Fenster geöffnet wird, was aber schelcht ist, weil ich ja die Ausgabe für die Batch brauche, die schon läuft.

    Kennt jemand einen weg, wie man ins Fenster was die Batch verwendet, etwas ausführen kann?

    Ich starte das Autoit script mit: scriptname.exe /wait

    Falls das generell nicht geht, kann ich eine Variable erstellen, auf die auch meine Batch zugreifen kann? Ich hab das mal mit "set testvar=test" über "_RunDos" probiert, aber ohen erfolg...

    Ein Autoit script habe ich jetzt momentan nicht vorliegen, brauche das eh für viele verschiedene scripts die je nach einsatz variieren. Bei bedarf kann ich mir kurz eins ausdenken ^^
    Vieleicht sei noch zu erwähnen das ich am ende jedes Autoit scripts das Errorlevel setze mit z.b. "EXIT (2)"
    Das lese ich dann mit der Batch über die Variable %ERRORLEVEL% wieder aus. Ich habe mal probier da mehr als nur eine Zahl reinzupacken, das Ergebnis war aber das ich nur die Zahl bekam und den Text den ich reingepackt habe nicht.

    Ich hoffe jemand hat einen Tipp wie man das realisiert :)

  • ControlGetFocus - Geht das auch mit dem Maus Fokus?

    • Neklor
    • 16. Oktober 2009 um 13:51

    funkey: Danke, das ist genau das was ich gesucht habe ;)
    Andy: Klappt leider nicht, die Funktion gibt immer 0 zurück, also ist irgendein Fehler aufgetreten, konnte das nicht weiter eingrenzen, aber mein Problem ist ja schon gelöst, trotzdem Danke ;)

  • Mouseclicks in nicht aktiven bzw minimieren Anwendungen...

    • Neklor
    • 16. Oktober 2009 um 11:56

    Minimiert gehts auch ;)
    z.b.:

    [autoit]


    Opt ("WinTitleMatchMode", 4)
    ControlClick("classname=Notepad", "", "MDIClient1") ; Notepad Beispiel
    ;oder
    $handle = WinGetHandle("classname=Notepad")
    PixelGetColor( 10 , 100, $handle )

    [/autoit]

    Habs jetzt nicht getestet, sollte aber so klappen :)

  • AutoIT auf windows 7

    • Neklor
    • 16. Oktober 2009 um 11:49

    Hier die Aktuellste version runter laden, Scite am besten auch gleich dazu. http://www.autoitscript.com/autoit3/downloads.shtml
    Script erstellen und Testen, sollte klappen. ;)

  • ControlGetFocus - Geht das auch mit dem Maus Fokus?

    • Neklor
    • 16. Oktober 2009 um 11:39

    Hi, ich brauche eine Funktion die Ferststellt ob eine Control in diesem Falle ein Button, den Maus Fokus hat. Mit ControlGetFocus findet man ja nur raus wann die Control den Keyboard Focus hat.
    Gibt es da ne möglichkeit? Der Button wird übrigens erleuchtet wenn man mit der Maus drüber fährt. Oder ist es möglich herauszufinden welche Control sich grad unter der Maus befindet, so wie bei Window Info?

  • Problem bei verwendung von AnyGui

    • Neklor
    • 15. Oktober 2009 um 11:30

    Keiner ne idee :?:

  • Problem bei verwendung von AnyGui

    • Neklor
    • 13. Oktober 2009 um 15:28

    Ok, hier die gewünschten Infos ;)

    Software: Büro Plus Next von Microtech

    Mein bisheriger Code:

    [autoit]


    #include <guiconstants.au3>
    #include <GuiButton.au3>
    #include <ANYGUI.au3> ;v 2.8 fixed
    Opt ("WinTitleMatchMode", 4)
    WinWait('"(1) LTC" auf')
    MsgBox(0, "Test", "Next Fenster gefunden!")
    $guit = _GuiTarget('"(1) LTC" auf',1)
    MsgBox(0, "Test", "Fenster handle: " & $guit)
    ControlHide( $guit, "", "TBpBitBtn1") ; Funktioniert
    GUISetState ( )
    $btn = _TargetaddButton("Verbuchen",1579,871,94,75, $guit) ; Funktioniert nicht
    If @error Then
    MsgBox(0, "Test", "@error=1")
    EndIf
    GUISetState()

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    While 1

    [/autoit][autoit][/autoit][autoit]

    Sleep(50)
    WEnd
    Exit

    [/autoit]

    Es geht um den Button im rotem Kreis, den lasse ich verschwinden, das klappt auch, aber nun soll da ein neuer hin. Geht aber irgendwie nicht. Ich habs Testweise auch mal an der stelle wo der blaue Kreis ist probiert, hat aber auch nicht Funktioniert. Die Infos von Window Info stehen ja oben in meinem Post.
    Es würde mir aber auch schon reichen wenn ich rausfinden könnte, wenn der Button im roten Kreis gedrückt wurde, dann würde ich das anders lösen. Wäre dann zwar nicht optimal, aber ausreichend.

    [Blockierte Grafik: http://img110.imageshack.us/img110/5594/next.th.jpg]

  • Problem bei verwendung von AnyGui

    • Neklor
    • 12. Oktober 2009 um 18:22

    Also, genau das gleiche wie zuvor. Der Alte Button verschwindet, soweit ok. Aber der neue Button taucht nicht auf, hab das auch schon auf anderen koordinaten Probiert, ohne erfolg. Außerdem taucht der versteckte alte Button wieder auf wenn man die Kategorie wechselt und zurück. Ist aber nicht so schlimm, das verstecken kann man dann ja wiederholen.

    Edit: Das mit der Alternativen Lösung bezog sich auf den Knopf den ich versteckt habe. Wenn ich die möglichkeit hätte abzufragen ob dieser geklickt wurde, wäre mir auch geholfen, dann wird zwar die Verbuchen Funktion schon ausgeführt aber ich kann meine GUI dann aufdringlich genug in den Vordergrund legen das man die nicht einfach so wegklickt.

  • Problem bei verwendung von AnyGui

    • Neklor
    • 12. Oktober 2009 um 18:10

    Das funktioniert leider auch nicht :(
    Kennt sonst vieleicht jemand ne möglichkeit um herauszufinden wann der Button geklickt wurde?
    Das wäre zumindest ne alternative zu dieser Lösung. Ich glaube langsam das es an dem Programm liegt, denn die Beispiele für AnyGui funktionieren gut und viel anders mach ich das ja in meinem Script auch nicht. ;)

  • Problem bei verwendung von AnyGui

    • Neklor
    • 12. Oktober 2009 um 09:27

    Bringt leider auch nix, es taucht kein Button auf. Ich hab jetzt mal @error gecheckt aber das ist 0.
    Könnte es daran liegen, weil der alte Button ja noch an der stelle liegt, nur unsichtbar oder Blockt das Programm das? Wenn ich nen Tab wechsle und zurück ist nämlich der alte Knopf wieder da. ?(
    Gibt es ansonsten vieleicht ne möglichkeit abzufragen wann jemand den Button gedrückt hat, also den, den ich verschwinden lassen habe. Das würde mein Problem auch lösen ;)

  • Problem bei verwendung von AnyGui

    • Neklor
    • 9. Oktober 2009 um 15:49
    Zitat von Schnitzel

    ich denke es liegt ganz einfach daran dass du nicht angibst welchen fenster du den butten hinzufügen möchtest

    probier mal und tausche deine zeile nr 10 gegen diese aus:

    [autoit]

    $btn = _TargetaddButton("Verbuchen und Statistik",1579,871,94,75, $guit) ; Funktioniert vielleicht

    [/autoit]

    Ja das könnte es vieleicht wirklich sein, kann es aber erst Montag wieder Testen, sollte das nicht klappen meld ich mich nochmal :)

    @Arkaneus: Hmm, hab ich vorhin leider nicht geprüft, gebe da am Montag nochmal Rückmeldung ;)

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™