Wers ein wenig direkter will kann vielleicht auch die beiden DLLs im Verzeichnis ansteuern. Keine Ahnung ob die irgendwo dokumentiert sind, würde aber mal davon ausgehen.
Beiträge von misterspeed
-
-
Hmm seltsam, ich sollte vielleicht doch mal die Autoitversion updaten:
Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist. -
Die letzte Woche ja, sofern sie nicht komplett ist, aber bei dir wird auch die vorletzte (23.-29. Dezember) schon als Woche 1 angezeigt und die letzte Woche dann nochmals als Woche 1.
-
Im Dezember passt das mit den Wochennummern aber nicht so ganz.

-
Naja du bist doch fast fertig und hast bereits alles was du dazu brauchst, auch wenn du das ziemlich umständlich machst.
1. Du kennst das heutige Datum.
2. Du kennst den heutigen Wochentag.
3. Du weist wieviele Tage der aktuelle Monat noch haben wird.
4. Du weist wieviele Tage der nächste Monat haben wird.Das sollte ausreichen. Nun musst du nur noch den richtigen Wochentag für den Monatsersten des kommenden Monats ermitteln, dazu würde ich einfach die noch verbleibenden Tage des Monats hernehmen und den Tag solange ändern bis du am Ende ankommst, dann weist du welcher Tag der Monatserste ist und kannst von hier aus dann wiederum weiterzählen bis alle Monatstage erstellt wurden. Du brauchst dafür lediglich eine Schleife, ein Array und ein bisschen Logik. Vermutlich bieten die Datumsfunktionen oder spezielle Date UDF's aber bereits eine Möglichkeit um den Wochentag eines gegebenen Datums zu bestimmen, wenn du da nichts finden solltest musst du es eben wie oben beschrieben selbst ermitteln.
EDIT: Eine Schleife braucht man eigentlich garnicht, etwas rechnen würde es auch tun um ans Ziel zu kommen und den korrekten Tag aus dem Array auszulesen.
-
Dir ist schon klar, dass diese UDF aus dem Jahr 2008 stammt und sich der Skype Client seitdem vermutlich massivst verändert hat und zwischenzeitlich an Microsoft verkauft wurde?
-
Da ich mich die ganze Zeit gefragt habe wie man darauf kam, dass das hier ein 3D Array sein soll und ichs nun auch endlich gesehn hab:
[autoit]
[/autoit]
$key = _ArraySearch ($entries[$i], $categories[$i_1][1])
If $key Then
$val &= $entries[$i][$key][1]Was nun? Ist $entries ein 1D Array oder ein 3D Array? Da es in der oberen Zeile zum Absturz kommt wird es wohl mehr als eine Dimension haben und du sprichst das Array an dieser Stelle falsch an. Sofern es ein 3D Array ist siehe auch die Anmerkungen von meinen Vorpostern bezüglich Einschränkungen der maximalen Dimensionen für die meisten Array Funktionen.
-
Nein, ich hab zwar noch nie static variablen in Autoit verwendet, aber ich gehe davon aus, dass
local static
das macht wonach es sich anhört. Eine lokale statische Variable, welche nur innerhalb der Funktion genutzt werden kann, aber statisch ist, also auch bei mehrmaligen Aufrufen der Funktion ihren Inhalt behält. In anderen Funktionen oder globalen Scriptbereichen dürfte solch eine Variable meiner Auffassung nach nicht existieren / zugreifbar sein.
-
Zum einen fehlen einige der genutzten Includes, diese sollten mindestens von dir verlinkt werden, besser als Dateianhang bereitgestellt werden:
Spoiler anzeigen
C
Alles anzeigenC:\Users\xxxxxxxxxx\Desktop\AutoIt v3 Script (neu) (2).au3(12,10) : ERROR: can't open include file <WinHttp.au3> #include <WinHttp.au3> ~~~~~~~~~^ C:\Users\xxxxxxxxxx\Desktop\AutoIt v3 Script (neu) (2).au3(14,10) : ERROR: can't open include file <FF.au3> #include <FF.au3> ~~~~~~~~~^ C:\Users\xxxxxxxxxx\Desktop\AutoIt v3 Script (neu) (2).au3(16,10) : ERROR: can't open include file <_AutoItErrorTrap.au3> #include <_AutoItErrorTrap.au3> ~~~~~~~~~^ C:\Users\xxxxxxxxxx\Desktop\AutoIt v3 Script (neu) (2).au3(27,18) : ERROR: _AutoItErrorTrap(): undefined function. _AutoItErrorTrap() ~~~~~~~~~~~~~~~~~^ C:\Users\xxxxxxxxxx\Desktop\AutoIt v3 Script (neu) (2).au3(301,97) : ERROR: _GUICtrlListView_GetItemText(): undefined function. Local $sText1 = _GUICtrlListView_GetItemText($hListViewChatT4, GUICtrlRead($hListViewChatT4)) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ C:\Users\xxxxxxxxxx\Desktop\AutoIt v3 Script (neu) (2).au3(518,101) : ERROR: _FFStart(): undefined function. Global $hFF = _FFStart($sHTTP & $sSearchNyaaSite & GetSongInfo()[2], Default, $iAttachFF) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^Zum anderen gibt es etliche Syntax Fehler, möglicherweise sind solche Gebilde in aktuellen Beta Versionen erlaubt, in meiner Autoitversion ist sowas jedenfalls nicht erlaubt:
Spoiler anzeigen
Code
Alles anzeigenC:\Users\xxxxxxxxxx\Desktop\AutoIt v3 Script (neu) (2).au3(320,117) : ERROR: syntax error _IECreate(StringSplit(_GUICtrlListView_GetItemText($hListViewChatT4, GUICtrlRead($hListViewChatT4), 3), "#")[ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ C:\Users\xxxxxxxxxx\Desktop\AutoIt v3 Script (neu) (2).au3(510,69) : ERROR: syntax error Global $hIE = _IECreate($sSearchNyaaSite & GetSongInfo()[ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ C:\Users\xxxxxxxxxx\Desktop\AutoIt v3 Script (neu) (2).au3(512,71) : ERROR: syntax error Global $hIE = _IECreate($sSearchGoogleSite & GetSongInfo()[ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ C:\Users\xxxxxxxxxx\Desktop\AutoIt v3 Script (neu) (2).au3(514,67) : ERROR: syntax error Global $hIE = _IECreate($sSearchTTSite & GetSongInfo()[ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ C:\Users\xxxxxxxxxx\Desktop\AutoIt v3 Script (neu) (2).au3(518,77) : ERROR: syntax error Global $hFF = _FFStart($sHTTP & $sSearchNyaaSite & GetSongInfo()[ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ C:\Users\xxxxxxxxxx\Desktop\AutoIt v3 Script (neu) (2).au3(520,79) : ERROR: syntax error Global $hFF = _FFStart($sHTTP & $sSearchGoogleSite & GetSongInfo()[ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ C:\Users\xxxxxxxxxx\Desktop\AutoIt v3 Script (neu) (2).au3(522,75) : ERROR: syntax error Global $hFF = _FFStart($sHTTP & $sSearchTTSite & GetSongInfo()[ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^Dazu kommen dann noch einige weniger kritische Warnungen, die auf deinen schlechten Programmierstil zurückzuführen sind und unter bestimmten Umständen zum Absturz führen könnten (Deklaration globaler Variablen innerhalb von Funktionen):
Spoiler anzeigen
Code
Alles anzeigenC:\Users\xxxxxxxxxx\Desktop\AutoIt v3 Script (neu) (2).au3(253,37) : WARNING: $hRadioQuality1T1: possibly used before declaration. If GUICtrlRead($hRadioQuality1T1) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ C:\Users\xxxxxxxxxx\Desktop\AutoIt v3 Script (neu) (2).au3(256,41) : WARNING: $hTrayItemStart: possibly used before declaration. TrayItemSetState($hTrayItemStart, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ C:\Users\xxxxxxxxxx\Desktop\AutoIt v3 Script (neu) (2).au3(257,40) : WARNING: $hTrayItemStop: possibly used before declaration. TrayItemSetState($hTrayItemStop, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ C:\Users\xxxxxxxxxx\Desktop\AutoIt v3 Script (neu) (2).au3(258,41) : WARNING: $hRadioQuality2T1: possibly used before declaration. ElseIf GUICtrlRead($hRadioQuality2T1) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ C:\Users\xxxxxxxxxx\Desktop\AutoIt v3 Script (neu) (2).au3(263,41) : WARNING: $hRadioQuality3T1: possibly used before declaration. ElseIf GUICtrlRead($hRadioQuality3T1) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ C:\Users\xxxxxxxxxx\Desktop\AutoIt v3 Script (neu) (2).au3(275,38) : WARNING: $hLabelSongAlbumT1: possibly used before declaration. GUICtrlSetData($hLabelSongAlbumT1, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ C:\Users\xxxxxxxxxx\Desktop\AutoIt v3 Script (neu) (2).au3(277,39) : WARNING: $hLabelSongArtistT1: possibly used before declaration. GUICtrlSetData($hLabelSongArtistT1, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ C:\Users\xxxxxxxxxx\Desktop\AutoIt v3 Script (neu) (2).au3(279,39) : WARNING: $hLabelSongLengthT1: possibly used before declaration. GUICtrlSetData($hLabelSongLengthT1, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ C:\Users\xxxxxxxxxx\Desktop\AutoIt v3 Script (neu) (2).au3(281,38) : WARNING: $hLabelSongTitleT1: possibly used before declaration. GUICtrlSetData($hLabelSongTitleT1, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ C:\Users\xxxxxxxxxx\Desktop\AutoIt v3 Script (neu) (2).au3(283,38) : WARNING: $hLabelExtraDataT1: possibly used before declaration. GUICtrlSetData($hLabelExtraDataT1, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ C:\Users\xxxxxxxxxx\Desktop\AutoIt v3 Script (neu) (2).au3(284,39) : WARNING: $hImageSongImageT1: possibly used before declaration. GUICtrlSetImage($hImageSongImageT1, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ C:\Users\xxxxxxxxxx\Desktop\AutoIt v3 Script (neu) (2).au3(290,43) : WARNING: $hCheckboxBrowserAttach: possibly used before declaration. If GUICtrlRead($hCheckboxBrowserAttach) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ C:\Users\xxxxxxxxxx\Desktop\AutoIt v3 Script (neu) (2).au3(296,57) : WARNING: $hSliderVolumeT1: possibly used before declaration. $oWMP.settings.volume = GUICtrlRead($hSliderVolumeT1) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ C:\Users\xxxxxxxxxx\Desktop\AutoIt v3 Script (neu) (2).au3(297,35) : WARNING: $hLabelVolumeT1: possibly used before declaration. GUICtrlSetData($hLabelVolumeT1, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ C:\Users\xxxxxxxxxx\Desktop\AutoIt v3 Script (neu) (2).au3(301,66) : WARNING: $hListViewChatT4: possibly used before declaration. Local $sText1 = _GUICtrlListView_GetItemText($hListViewChatT4, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ C:\Users\xxxxxxxxxx\Desktop\AutoIt v3 Script (neu) (2).au3(367,58) : WARNING: $hInputChatLineT4: possibly used before declaration. Local $iChatreadCount = GUICtrlRead($hInputChatLineT4) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ C:\Users\xxxxxxxxxx\Desktop\AutoIt v3 Script (neu) (2).au3(378,46) : WARNING: $hEditChatT4: possibly used before declaration. _GUICtrlEdit_BeginUpdate($hEditChatT4) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ C:\Users\xxxxxxxxxx\Desktop\AutoIt v3 Script (neu) (2).au3(446,38) : WARNING: $GUIMain: possibly used before declaration. GUISetState(@SW_RESTORE, $GUIMain) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ C:\Users\xxxxxxxxxx\Desktop\AutoIt v3 Script (neu) (2).au3(457,38) : WARNING: $hTrayItemMute: possibly used before declaration. If TrayItemGetText($hTrayItemMute) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ C:\Users\xxxxxxxxxx\Desktop\AutoIt v3 Script (neu) (2).au3(474,40) : WARNING: $hTrayItemVolumeUp: possibly used before declaration. TrayItemSetState($hTrayItemVolumeUp, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ C:\Users\xxxxxxxxxx\Desktop\AutoIt v3 Script (neu) (2).au3(482,42) : WARNING: $hTrayItemVolumeDown: possibly used before declaration. TrayItemSetState($hTrayItemVolumeDown, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ C:\Users\xxxxxxxxxx\Desktop\AutoIt v3 Script (neu) (2).au3(486,36) : WARNING: $hRadioFireFoxT1: possibly used before declaration. If GUICtrlRead($hRadioFireFoxT1) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ C:\Users\xxxxxxxxxx\Desktop\AutoIt v3 Script (neu) (2).au3(488,35) : WARNING: $hRadioIET1: possibly used before declaration. ElseIf GUICtrlRead($hRadioIET1) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ C:\Users\xxxxxxxxxx\Desktop\AutoIt v3 Script (neu) (2).au3(492,33) : WARNING: $hRadioNyaaT1: possibly used before declaration. If GUICtrlRead($hRadioNyaaT1) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ C:\Users\xxxxxxxxxx\Desktop\AutoIt v3 Script (neu) (2).au3(494,39) : WARNING: $hRadioGoogleT1: possibly used before declaration. ElseIf GUICtrlRead($hRadioGoogleT1) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ C:\Users\xxxxxxxxxx\Desktop\AutoIt v3 Script (neu) (2).au3(496,35) : WARNING: $hRadioTTT1: possibly used before declaration. ElseIf GUICtrlRead($hRadioTTT1) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ C:\Users\xxxxxxxxxx\Desktop\AutoIt v3 Script (neu) (2).au3(559,43) : WARNING: $htab: possibly used before declaration. Local $hCurrentTab = GUICtrlRead($htab, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ C:\Users\xxxxxxxxxx\Desktop\AutoIt v3 Script (neu) (2).au3(572,28) : WARNING: $htab1: possibly used before declaration. Case $htab1 ~~~~~~~~~~~~~~~~~~~~~~~~~~~^ C:\Users\xxxxxxxxxx\Desktop\AutoIt v3 Script (neu) (2).au3(726,28) : WARNING: $htab2: possibly used before declaration. Case $htab2 ~~~~~~~~~~~~~~~~~~~~~~~~~~~^ C:\Users\xxxxxxxxxx\Desktop\AutoIt v3 Script (neu) (2).au3(749,28) : WARNING: $htab3: possibly used before declaration. Case $htab3 ~~~~~~~~~~~~~~~~~~~~~~~~~~~^ C:\Users\xxxxxxxxxx\Desktop\AutoIt v3 Script (neu) (2).au3(750,28) : WARNING: $htab4: possibly used before declaration. Case $htab4 ~~~~~~~~~~~~~~~~~~~~~~~~~~~^ C:\Users\xxxxxxxxxx\Desktop\AutoIt v3 Script (neu) (2).au3(751,28) : WARNING: $htab5: possibly used before declaration. Case $htab5 ~~~~~~~~~~~~~~~~~~~~~~~~~~~^ C:\Users\xxxxxxxxxx\Desktop\AutoIt v3 Script (neu) (2).au3(752,28) : WARNING: $htab6: possibly used before declaration. Case $htab6 ~~~~~~~~~~~~~~~~~~~~~~~~~~~^ C:\Users\xxxxxxxxxx\Desktop\AutoIt v3 Script (neu) (2).au3(753,28) : WARNING: $htab7: possibly used before declaration. Case $htab7 ~~~~~~~~~~~~~~~~~~~~~~~~~~~^ C:\Users\xxxxxxxxxx\Desktop\AutoIt v3 Script (neu) (2).au3(754,28) : WARNING: $htab8: possibly used before declaration. Case $htab8 ~~~~~~~~~~~~~~~~~~~~~~~~~~~^ C:\Users\xxxxxxxxxx\Desktop\AutoIt v3 Script (neu) (2).au3(755,28) : WARNING: $htab9: possibly used before declaration. Case $htab9 ~~~~~~~~~~~~~~~~~~~~~~~~~~~^ C:\Users\xxxxxxxxxx\Desktop\AutoIt v3 Script (neu) (2).au3(756,29) : WARNING: $htab10: possibly used before declaration. Case $htab10 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ C:\Users\xxxxxxxxxx\Desktop\AutoIt v3 Script (neu) (2).au3(178,90) : WARNING: $hRadioQuality1T1: declared global in function only. Prefer top of file. Global $hRadioQuality1T1 = GUICtrlCreateRadio("AAC+ 48kbps", 20, 242, 97, 25, -1, -1) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^Ich würde dir also mal nahelegen die Deklaration globaler Variablen auch wirklich global zu machen und zusätzlich die Syntaxfehler abzustellen.
-
Schnitzel
Das ding ist schon älter, aber daran hab ich nicht gedacht ;DFestplatten sind ohnehin denkbar schlecht um eine HardwareID zu generieren. Festplatten werden häufig wegen defekt oder Platzmangel ersetzt. Wesentlich unproblematischer dürfte da die Seriennummer des Mainboards oder die MAC der Netzwerkkarte sein, ggf. auch die Seriennummer des Betriebssystems, die Bezeichnung des Prozessors usw.
-
Edit: Ich habe soeben versucht die Daten zurückzusenden wenn ich sie empfangen habe. Dann geht es Problemlos und die Verbindung verreckt nicht mehr.
Warum muss das so sein ?Das wird wohl an deinem Client liegen und nicht an deinem Server. Der Client trennt die Verbindung vermutlich nach kurzer Zeit, wenn er keine Antworten bekommt und auch erstmal nichts mehr senden möchte, was ja auch irgendwo Sinn macht. Es macht aber keinen Sinn hier über soetwas zu reden, wenn man nur einen Teil des Codes hat, woher sollen wir wissen was dein Client tut? Welche Version des Serverscriptes du nun benutzt ist auch nicht wirklich klar, vielleicht einfach mal die aktuelle Fassung posten und sofern möglich auch den Code des Clients auf deinem Android Gerät.
-
tcpaccept erlaubt eine neue Verbindung, sobald sich ein client mit deinem Server erfolgreich verbunden hat kann er Daten senden, welche du dann mit tcprecv empfangen kannst. Wenn der Client nach dem Senden die Verbindung trennt, dann wars das und du erhälst nur noch ein @error bei tcprecv, weil der Socket nicht mehr existent ist. Verlierst du also aus welchem Grund auch immer die Verbindung zum Client, dann muss der Client sich neu verbinden und neue Verbindungen nimmt dein Server nur dann an, wenn du tcpaccept aufrufst (dein Fehler, da du das nur einmalig zum Script start machst). Somit konnte dien Script nur einmal funktionieren, nämlich genau solange wie die Verbindung bestand.
-
Hmm, aber wenn ihr die Lizenz ohnehin telefonisch aktivieren müsst, wozu dann die Mühe machen den Aktivierungsclient automatisiert zu starten? Muss ja dann vermutlich ohnehin jemand an der Kiste sitzen...
-
Wo ist das Problem, sofern das directory listing nicht vom Webserver untersagt wird kann man sich problemlos alle im Verzeichnis befindlichen Dateien anzeigen lassen und mit minimaler Programmlogik dann die interessanten Downloadlinks zusammenstellen:
[autoit]
[/autoit]
$test = InetRead("http://deineURL.de/DeinLogDir/",17) ; gibt dir den HTML Quellcode in dem sich die Downloadlinks befinden
ConsoleWrite( BinaryToString($test) & @CRLF)
; nun nur noch einige String oder Regex Operationen und danach dann die gewünschte Datei mit inetget herunterladen -
Mal die Hilfe zu DirRemove() gelesen? Standardmässig werden Dateien und Unterverzeichnisse nicht gelöscht. Sollte das gewünscht sein muss der 2. Parameter der Funktion auf 1 gesetzt werden.
-
MrSpeed hat mir die richtige Lösung gebracht, allen anderen beteiligten (auch denen in der SB) möchte ich natürlich auch danken!
Nunja meine Lösung kann man eher als Workaround betrachten, die wirklich richtige Lösung stammt von Oscar, denn wenn du die Tab Deklaration nicht beendest wirst du später weiterhin dieses Problem haben, wenn z.B. nachträglich global erreichbare controls erstellt werden sollen.

-
Wenn man mit Tabs arbeitet muss man bei der Reihenfolge der Controlerstellung aufpassen. Dein Script von oben erstellt das Contextmenu nicht global für alle Tabs, sondern nur innerhalb des letzten Tabs. Dort funktioniert es dann auch wie gewünscht. Die Lösung ist simpel, du erstellst einfach alle Controls die von jedem Tab aus zugänglich sein sollen zuerst und dann erstellst du erst die Tabs mit ihren jeweiligen Controls.
Spoiler anzeigen
[autoit]
[/autoit]
#include <GUIConstantsEx.au3>
$hWnd = GUICreate("WhoIsInTheHouse", 700,700)
$tab = GUICtrlCreateTab(0, 0, 600,600)
$mainContextMenu = GUICtrlCreateContextMenu($tab)
local $mainContextMenuItem[5] ;Hauptkontextmenü
$mainContextMenuItem[0] = GUICtrlCreateMenuItem("create Computer", $mainContextMenu) ;neuen Computer erstellen
$mainContextMenuItem[1] = GUICtrlCreateMenuItem("edit Computer", $mainContextMenu) ;vorhandenen Computer bearbeiten
$mainContextMenuItem[2] = GUICtrlCreateMenuItem("delete Computer", $mainContextMenu) ;vorhanden Computer löschen
$mainContextMenuItem[3] = GUICtrlCreateMenuItem("", $mainContextMenu) ;Strich
$mainContextMenuItem[4] = GUICtrlCreateMenuItem("show Log", $mainContextMenu) ;show Log-File
local $tabs[7]
For $i=0 To 5
$tabs[$i] = GUICtrlCreateTabItem($i&". Stock")
Next
$tabs[6] = GUICtrlCreateTabItem("Aktualisieren")
GUISetState()
While 1
$msg = GUIGetMsg()
Select
Case $msg = $mainContextMenuItem[0] ; create Computer
MsgBox(0,"","create Computer")
Case $msg = $mainContextMenuItem[1] ; edit Computer
MsgBox(0,"","edit Computer")
Case $msg = $mainContextMenuItem[2] ; delete Computer
MsgBox(0,"","delete Computer")
Case $msg = $mainContextMenuItem[4] ; delete Computer
MsgBox(0,"","show Log")
Case $msg = $GUI_EVENT_CLOSE
GUIDelete()
Exit
EndSelect
WEnd -
Bin zwar kein Office/Word Experte, aber besitzt Word nicht eine Serienbrief Funktion die genau das gewünschte tut? Autoit benötigt man dafür normalerweise nicht.
-
Ich würde mal vermuten, dass es an UAC (Benutzerkontensteuerung) liegt. Tidy benötigt in jedem Fall Schreibrechte im Zielverzeichnis (Backup, bzw. neue Version des Scriptes), außerdem findet sich im Installationsverzeichnis im Tidy Ordner auch eine ini Datei, welche evtl. zur Laufzeit verändert wird. Gerade letzteres könnte mit aktiviertem UAC Probleme machen, da Windows Standardverzeichnisse in der Regel durch UAC vor Veränderungen geschützt werden. Auf deinem Screenshot sieht man außerdem, dass du einen ungewöhnlichen Verzeichnisnamen verwendest.
Ich würde daher folgende Dinge prüfen:
1. Datei oder Verzeichnis schreibgeschützt?
2. "$"-Zeichen aus Pfad entfernen
3. UAC testweise abschalten (Neustart nicht vergessen)
4. ggf. Virenscanner temporär deaktivieren
5. Alternativ zur Deaktivierung von UAC einen anderen Installationspfad für Autoit / Scite verwenden (z.B. "C:\Autoit") -
Desweiteren kann bzw. sollte man den onEvent mode nicht mit dem msgloop mode mischen. Wenn man es schon mischt muss vor einer guigetmsg Abfrage der onEvent mode temporär abgeschaltet werden. Dein guigetmsg in der zentralen while Schleife hat da also nicht wirklich etwas verloren.