Hmm ok, das geht natürlich auch, ich sehe das hier dann mal als gelöst an
Beiträge von Neklor
-
-
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
-
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):
CodeSet oFile = CreateObject("DSOFile.OleDocumentProperties") oFile.Open("c:\tmp\test.txt") oFile.SummaryProperties.Comments = "Test Comment" oFile.Save oFile.Close
Mein Script:
[autoit]
[/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)
ExitWenn ich das Script ausführe, bekomme ich den Fehlercode: 800401F3
Das bedeutet wohl so viel wie: Objekt nicht gefundenKann 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::CommentsWeiss jemand ob und wie ich das realisieren kann?
Muss ich die DLL tatsächlich registrieren? Wenn ja, muss die zwingend ins System32 verzeichnis? -
Hmm sehr komischer Fehler.
Probier es mal mit dieser Funktion, da wird die IE Druckfunktion verwendet:
[autoit]Func PrintFile($PrintThisFile)
[/autoit]
RunWait(@ComSpec & ' /c rundll32.exe ' & @SystemDir & '\mshtml.dll,PrintHTML "' & $PrintThisFile, @TempDir, @SW_HIDE)
EndFunc -
Also ich mache ganze Fenster Transparent, das lässt sich sicher auch auf einen Tab anwenden.
[autoit]
[/autoit][autoit][/autoit][autoit][/autoit][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)While 1
[/autoit][autoit][/autoit][autoit]
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
ExitEndSwitch
[/autoit]
WEndEdit2: Hier nochmal ein funktionierendes Beispiel, der Text erscheint oben links.
-
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?
-
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.8000Funktionierender Code für die Software:
[autoit]
[/autoit]
Dim $PhoneLineMgr
Dim $PhoneLineFocus
Dim $errval $PhoneLineMgr = ObjCreate("CLMgr.ClientLineMgr")
$PhoneLineFocus = $PhoneLineMgr.DispSelectedLine
$PhoneLineFocus.DispHookOff -
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:Und was man in Autoit machen könnte, geht so natürlich nicht...
[autoit]Run("set testvar1=Das ist ein Test")
[/autoit]
EXIT (1)Als CUI kompiliere ich sowieso schon die ganze zeit
EDIT:
[autoit]
Der Code hier ist realistischer, geht aber auch nicht#include <Process.au3>
[/autoit]
_RunDos("set testvar1=Das ist ein Test")
EXIT (1) -
Nein, also mit Send möchte ich auf nem Server ungern Arbeiten
-
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
-
-
Minimiert gehts auch
[autoit]
z.b.:
[/autoit]
Opt ("WinTitleMatchMode", 4)
ControlClick("classname=Notepad", "", "MDIClient1") ; Notepad Beispiel
;oder
$handle = WinGetHandle("classname=Notepad")
PixelGetColor( 10 , 100, $handle )Habs jetzt nicht getestet, sollte aber so klappen
-
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. -
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? -
Keiner ne idee
-
Ok, hier die gewünschten Infos
Software: Büro Plus Next von Microtech
Mein bisheriger Code:
[autoit]
[/autoit][autoit][/autoit][autoit][/autoit][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()While 1
[/autoit][autoit][/autoit][autoit]Sleep(50)
[/autoit]
WEnd
ExitEs 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. -
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.
-
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. -
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 -
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