Ohne deinen Code zu kennen ist da schwer was zu sagen. ![]()
Wenn du z.B. erst beim Schließen der Datei tatsächlich in die Datei schreibst und vorher nur die Daten zusammenstellst, dann findet natürlich beim Abschießen über den TaskManager kein Schreibvorgang statt.
Beiträge von BugFix
-
-
Hallo teh_hahn,
die Lösung liegt, wie meist, ganz in der Nähe. Wenn du außerhalb des existierenden Listviewbereiches klickst wird Index -1 zurückgegeben. Das Abfragen und schon klappts:Spoiler anzeigen
[autoit]Func WM_NOTIFY($hWnd, $Msg, $wParam, $lParam)
[/autoit] [autoit][/autoit] [autoit]
#forceref $hWnd, $Msg, $wParamLocal Const $tNMHDR = DllStructCreate($tagNMHDR, $lParam)
[/autoit] [autoit][/autoit] [autoit]
Local Const $hWndFrom = DllStructGetData($tNMHDR, "hWndFrom")
Local Const $iIDFrom = DllStructGetData($tNMHDR, "IDFrom")
Local Const $iCode = DllStructGetData($tNMHDR, "Code")Local $hWndListView = 0
[/autoit] [autoit][/autoit] [autoit]
For $i = 0 To UBound($ah_lviews) - 1
$hWndListView = $ah_lviews[$i]
If Not IsHWnd($hWndListView) Then $hWndListView = GUICtrlGetHandle($hWndListView)
If $hWndFrom = $hWndListView Then
Switch $iCode
Case $NM_CLICK ;~ Single click
Case $NM_DBLCLK ;~ Double click
Local $tInfo = DllStructCreate($tagNMITEMACTIVATE, $lParam)
$i_idfrom = $iIDFrom ;~ ToDo: Global variable!
$i_index = DllStructGetData($tInfo, "Index") ;~ ToDo: Global variable!
$i_subitem = DllStructGetData($tInfo, "SubItem") ;~ ToDo: Global variable!
If $i_index < 0 Then Return ; ####### Das ist die Lösung #############################
Return _GUICtrlListView_EditShow($hWndListView, $i_idfrom, $i_index, $i_subitem)
EndSwitch
EndIf
NextReturn $GUI_RUNDEFMSG
[/autoit]
EndFunc ;==>WM_NOTIFY -
Die Methoden eines Objektes kannst du nicht abfragen - die mußt du kennen/suchen (MSDN).
Für Arbeit mit dem IE findest du in der Hilfe ausreichend Material: Hilfedatei ==> UDF ==> IE Management
-
Ich sehe grad, du möchtest, dass der Status(Progressbar) sich auf alle Dateien bezieht. Da weiß ich nicht ob das möglich ist.
Ansonsten Array mit den Quelldateien übergeben und einzeln ausführen. Aber das kannst du auch außerhalb der Funktion machen und diese, wie schon erwähnt, in einer Schleife aufrufen. -
Dann mußt du natürlich CTRL gedrückt halten:
[autoit]Send("{CTRLDOWN}" & $buff1_playernr & "{CTRLUP}")
[/autoit] -
Dann mußt du die Funktion umschreiben und statt einer Datei, ein Array mit Dateien übergeben.
-
Jetzt weiß ich endlich, warum es in AutoIt keine Konventionen gibt: Das würde nur noch mehr Verwirrung stiften.

-
mir ist nur aufgefallen das du bei Boolen Parametern immer zb. $bHide benutz, was aber für Binary steht.
Ich antworte einfach mal dazu
Da es in Autoit nur die Typen Variabel, Bool oder Array (oops - Object fast vergessen) - gibt, ist die Kennzeichnung einer Boolschen Variable mit b eigentlich durchaus sinnvoll. Ich handhabe das ebenso. -
-
@Tom99
Nicht direkt zum Thema, mehr allgemein: Du verwendest gerne Leerzeilen ?
Ich persönlich finde es dann mühseliger Code zu lesen, weil dadurch etwas die Blockstruktur zerfledert wird. Aber unabhängig davon muß man dann hier immer scrollen um den Code zu überblicken. 
-
Du kannst beim Lesen auf Fehler prüfen und dann die Abfrageschleife verlassen.
Oder verwende eine Objektfunktion von hier: Registry-Funktionen per Objekt -
Damit kannst du nur die erste Spalte bearbeiten.
Aber hier eine Version von mir, da kannst du jede Spalte editieren in einem über die Spalte gelegten Bearbeitungsfenster (in der Größe des Eintrages).
- Zum Editieren Doppelklick auf Eintrag
- wenn editiert, mit ENTER Eintrag übernehmen und Edit-Fenster schließen
- wenn nichts geändert wurde, mit ESC schließenSpoiler anzeigen
[autoit]#include<StaticConstants.au3>
[/autoit] [autoit][/autoit] [autoit]
#include<GUIConstantsEx.au3>
#include<ListViewConstants.au3>
#include<StructureConstants.au3>
#include<WindowsConstants.au3>
#include <GUIListView.au3>
Opt("GUIOnEventMode", 1)
Global $currentItem[2], $title$gui = GUICreate('test')
[/autoit] [autoit][/autoit] [autoit]
GUISetOnEvent($GUI_EVENT_CLOSE, '_ende')
$hListView = GUICtrlCreateListView('Spalte1|Spalte2|Spalte3', 10, 10, 300, 200, $LVS_REPORT)
_GUICtrlListView_SetColumnWidth($hListView, 0, 70)
_GUICtrlListView_SetColumnWidth($hListView, 1, 60)
_GUICtrlListView_SetColumnWidth($hListView, 2, $LVSCW_AUTOSIZE_USEHEADER )
For $i = 1 To 9
GUICtrlCreateListViewItem('Z. ' & $i & ' - Sp. 1|Z. ' & $i & ' - Sp. 2|Z. ' & $i & ' - Sp. 3', $hListView)
Next$EditBox = GUICreate('', 200, 30, -1, -1, BitOR($WS_POPUP,$WS_BORDER), $WS_EX_TOPMOST)
[/autoit] [autoit][/autoit] [autoit]
$edit = GUICtrlCreateInput('', 5, 5, 190, 20, $SS_CENTER)
GUICtrlSetOnEvent(-1, '_EditEnter')
HotKeySet('{ESC}', '_escEdit')GUISetState(@SW_SHOW, $gui)
[/autoit] [autoit][/autoit] [autoit]
GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")While True
[/autoit] [autoit][/autoit] [autoit]
Sleep(100)
WEndFunc _LeftDblClick($Info)
[/autoit] [autoit][/autoit] [autoit]
If $Info[3] = -1 Then Return
_GUICtrlListView_SetSelectedColumn($Info[1], $Info[4])
$title = WinGetTitle($gui)
Local $mouse = MouseGetPos(), $wndEdit = WinGetPos($EditBox)
Local $wndGUI = WinGetPos($gui), $wndLV = ControlGetPos($gui, '', $hListView)
Local $colInfo = _GUICtrlListView_GetColumn($Info[1], $Info[4]), $sumWidth = 0, $tmp
WinSetTitle($gui, '', 'Editiere: Zeile ' & $Info[3]+1 & ', ' & $colInfo[5])
For $i = 0 To $Info[4]
$tmp = _GUICtrlListView_GetColumn($Info[1], $i)
$sumWidth += $tmp[4]
Next
$sumWidth -= $colInfo[4]
Local $xPos = $wndGUI[0]+$wndLV[0]+$sumWidth
If $xPos+$colInfo[4]+10 > @DesktopWidth Then $xPos = @DesktopWidth - ($colInfo[4] + 10)
If $xPos < 0 Then $xPos = 0
WinMove($EditBox, '', $xPos, $mouse[1]-$wndEdit[3], $colInfo[4]+10)
GUICtrlSetData($edit, _GUICtrlListView_GetItemText($Info[1], $Info[3], $Info[4]))
$currentItem[0] = $Info[3]
$currentItem[1] = $Info[4]
GUISetState(@SW_SHOW, $EditBox)
EndFuncFunc _escEdit()
[/autoit] [autoit][/autoit] [autoit]
WinSetTitle($gui, '', $title)
GUISetState(@SW_HIDE, $EditBox)
EndFuncFunc _EditEnter()
[/autoit] [autoit][/autoit] [autoit]
WinSetTitle($gui, '', $title)
_GUICtrlListView_SetItemText($hListView, $currentItem[0], GUICtrlRead($edit), $currentItem[1])
GUISetState(@SW_HIDE, $EditBox)
EndFuncFunc _ende()
[/autoit] [autoit][/autoit] [autoit]
Exit
EndFuncFunc WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam)
[/autoit]
Local $hWndFrom, $iIDFrom, $iCode, $tNMHDR, $hWndListView
$hWndListView = $hListView
If Not IsHWnd($hListView) Then $hWndListView = GUICtrlGetHandle($hListView)
$tNMHDR = DllStructCreate($tagNMHDR, $ilParam)
$hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
$iIDFrom = DllStructGetData($tNMHDR, "IDFrom")
$iCode = DllStructGetData($tNMHDR, "Code")
Switch $hWndFrom
Case $hWndListView
Switch $iCode
Case $NM_DBLCLK ; Sent by a list-view control when the user double-clicks an item with the left mouse button
Local $tInfo = DllStructCreate($tagNMITEMACTIVATE, $ilParam)
Local $aInfo[5] = [$hWndFrom, $iIDFrom, $iCode, DllStructGetData($tInfo, "Index"), _
DllStructGetData($tInfo, "SubItem")]
_LeftDblClick($aInfo)
EndSwitch
EndSwitch
Return $GUI_RUNDEFMSG
EndFunc ;==>WM_NOTIFY -
hey ich hab jetzt letzens mit dieser keyliste einen keylogger programmiert.
bei mir ist das Problem das oft beim aufzeichnen wenn ich z.B. HalloWelt schreibe
zeichnet er folgendes in die log.txt
haallowwlt
es tauchen also Wörter doppelt auf und einige gar nicht?
wie kann man sowas verhindern?
Also
A) einen Keylogger zu programmieren und dazu Hilfe zu wollen - gibt es bei uns nicht
B) _IsPressed ist eh nicht sonderlich dafür geeignet -
Hallo und Willkommen.
Ich denke, du wirst dich wohl fühlen bei uns. Lies am Anfang mal die gepinnten Beiträge im Hilfe-Forum - das spart eine Menge Fragen und Sucharbeit
Übrigens:
Bei Bildschirmschonern stört mich hauptsächlich, dass sie existieren
. Warum - und was man dagegen machen kann - s. hier: Bildschirmschoner entfernen -
Systeminfo gibts nur in XP Professional.
Brauch ich nicht - ich hab doch "msinfo32" 
-
Aber wenn ich Win Prof hätte (damit wird es gehen) würde ich es so machen:
[autoit]#include <Constants.au3>
[/autoit][autoit][/autoit][autoit]Local $foo = Run(@ComSpec & ' /c systeminfo | find "Systemstartzeit"', @SystemDir, @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD)
[/autoit][autoit][/autoit][autoit]
Local $line
While 1
$line = StdoutRead($foo)
If @error Then ExitLoop
MsgBox(0, "STDOUT read:", $line)
WendWhile 1
[/autoit][autoit][/autoit][autoit]
$line = StderrRead($foo)
If @error Then ExitLoop
MsgBox(0, "STDERR read:", $line)
WendMsgBox(0, "Debug", "Exiting...")
[/autoit] -
Was mache ich falsch? Oder was fehlt?
Eine GUI? - und der richtige Bildtyp

-
'systeminfo | find "Systemstartzeit"'
In was für einem Windows soll es diesen Befehl geben? - Meines (XP Home) kennt das nicht.

-
Aso^^
konnte damit nix anfangen^^. Könnt mir das evtl. einer erklären blick da noch net so durch

Michi26206
Ich habe mich damit nicht weiter beschäftigt - ICQ ist mir den Aufwand nicht wert.

Das gesamte OSCAR-Protokoll wird dir sicher keiner erklären (wollen) - ist etwas zu umfangreich
. Aber die Funktionen aus dem Link sind doch eindeutig - damit kannst du doch deinen Bot erstellen. Lies dich ein - stell erst mal das Grundgerüst zusammen (Verbindung aufbauen, Nachricht senden, Nachricht empfangen...). Alles Schritt für Schritt. Und wenn dabei Fragen auftauchen: Code posten und Problem angeben. 
-
OK - so sollte es klappen:
Spoiler anzeigen
[autoit]Case $btn_raum_laden
[/autoit]
;hier sollte meiner meinung nach die list "geleert" werden, da ich sonst mehrfache einträge bekomme
; JA - muß geleert werden:
_GUICtrlListBox_ResetContent($list_clients) ; leert Liste
$raum_read = GUICtrlRead($cmb_raum)
;~ Global $data_raum ==> Deklaration am Skriptanfang, hier nur:
$data_raum = ''
$raumfile = ("z:\"& $raum_read & ".txt")
;~ MsgBox(0,"",$raumfile)
$raumfile= FileOpen ($raumfile,0)
$zeile = 1
While 1
$read = FileReadLine($raumfile, $zeile)
If $read = "" Then ExitLoop
$data_raum = $data_raum & $read & "|"
$zeile += 1
;~ MsgBox(0,"",$data_raum)
WEnd
GUICtrlSetData($list_clients, $data_raum)