Der_Doc: Ich hatte doch schon beantwortet. Meine gezeigte Lösung funktioniert. Das Select ist nur unnütz, schadet aber nicht.
Beiträge von BugFix
-
-
Du brauchst nur ein Objekt "Excel.Application". Ist eine Hierarchie: ExcelObjekt-Workbooks-Sheets
[autoit]
Daraus resultierte auch der Fehler, weil die Workbooks in zwei getrennten Objekten "zu Hause" waren, konnten sie nicht miteinander kommunizieren.
Ich verwende lieber die Tabellennummern, spart Schreibarbeit.
Aber Name geht natürlich auch.Local $oExcel = ObjCreate("Excel.Application")
[/autoit][autoit][/autoit][autoit]
$oExcel.Visible = 1 ; oder 0 unsichtbarLocal $sFilePathA = 'FileA.xls'
[/autoit][autoit][/autoit][autoit]
Local $sFilePathB = 'FileB.xls'
Local $oBookA = $oExcel.Workbooks.Open($sFilePathA)
Local $oBookB = $oExcel.Workbooks.Open($sFilePathB)$oBookA.Sheets(1).Copy( Default, $oBookB.Sheets(1))
[/autoit] -
zum schreiben in die erweiterten Datei Infos?
Danach habe ich bisher vergeblich gesucht. :wacko: -
Diese Fehlermeldung kommt in deinem Fall sicher, weil IniRead fehlgeschlagen ist (Entschlüsseln versagt).
Du hast mehrere Möglichkeiten anzusetzen, z.B.:
- Fehler beim Entschlüsseln abfragen
- Fehler beim Ini lesen abfragen
Ein sauberes Fehlermanagement sollte dich zum Ziel bringen. -
Oder wie machen das die Profis hier?
Ich bin mal so frei und fühl mich mit angesprochen.

Aber letztlich bin ich da kein guter Ratgeber, da ich keinen Wert auf Style lege. Ich bin ein reiner Funktionalist. -
Wenn ich es richtig verstanden habe, soll das Input ausgelesen werden, wenn der Fokus im Input ist und ENTER gedrückt wird.
Dazu brauchst du einen Hook:Spoiler anzeigen
[autoit]#include <WinAPI.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <WindowsConstants.au3>
Opt("GUIOnEventMode", 1)
OnAutoItExitRegister('OnAutoItExit')Global $hStub_KeyProc = DllCallbackRegister("_KeyProc", "long", "int;wparam;lparam")
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
Global $hmod = _WinAPI_GetModuleHandle(0)
Global $hHook = _WinAPI_SetWindowsHookEx($WH_KEYBOARD_LL, DllCallbackGetPtr($hStub_KeyProc), $hmod)
Global $active = False, $gui, $input$gui = GUICreate('')
[/autoit] [autoit][/autoit] [autoit]
GUISetOnEvent(-3, '_ende')
$input = GUICtrlCreateInput('', 10,10,100)GUISetState()
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]While 1
[/autoit] [autoit][/autoit] [autoit]
If BitAND(WinGetState($gui),
Then
$active = True
Else
$active = False
EndIf
Sleep(100)
WEndFunc _ende()
[/autoit] [autoit][/autoit] [autoit]
Exit
EndFunc;===========================================================
[/autoit] [autoit][/autoit] [autoit]
; callback function
;===========================================================
Func _KeyProc($nCode, $wParam, $lParam)
Local $tKEYHOOKS, $vkCode, $ID, $index
$tKEYHOOKS = DllStructCreate($tagKBDLLHOOKSTRUCT, $lParam)
If $nCode < 0 Or Not $active Then Return _WinAPI_CallNextHookEx($hHook, $nCode, $wParam, $lParam)
$vkCode = DllStructGetData($tKEYHOOKS, "vkCode")
If $wParam = $WM_KEYDOWN And $vkCode = 13 Then ; ENTER gedrückt$ID = _WinAPI_GetDlgCtrlID(ControlGetHandle($gui, '', ControlGetFocus($gui)))
[/autoit] [autoit][/autoit] [autoit]
If $ID <> $input Then Return _WinAPI_CallNextHookEx($hHook, $nCode, $wParam, $lParam)
ConsoleWrite(GUICtrlRead($input) & @CRLF) ; Hier darf auf keinen Fall eine MsgBox aufgerufen werden!EndIf
[/autoit] [autoit][/autoit] [autoit]
Return _WinAPI_CallNextHookEx($hHook, $nCode, $wParam, $lParam)
EndFuncFunc OnAutoItExit()
[/autoit]
_WinAPI_UnhookWindowsHookEx($hHook)
DllCallbackFree($hStub_KeyProc)
EndFunc -
Meinst du so etwas:
[autoit]#include <GUIConstantsEx.au3>
[/autoit][autoit][/autoit][autoit]
#include <WindowsConstants.au3>
$GUImain = GUICreate('Main', 255, 40, -1, -1, Default, $GUI_WS_EX_PARENTDRAG)
GUICtrlCreatePic(@Systemdir & "\oobe\images\mslogo.jpg", 0, 0, 255, 40)
GUICtrlSetState(-1, $GUI_DISABLE)$GUIBtn = GUICreate("", 80, 20, 155, 10, $WS_POPUP, $WS_EX_MDICHILD, $GUImain)
[/autoit][autoit][/autoit][autoit]
WinSetTrans($GUIBtn, "", 150)
$Btn = GUICtrlCreateButton('Button', 0, 0, 80, 20)GUISetState(@SW_SHOW, $GUIBtn)
[/autoit][autoit][/autoit][autoit][/autoit][autoit]
GUISetState(@SW_SHOW, $GUImain)Do
[/autoit]
Until GUIGetMsg() = $GUI_EVENT_CLOSE -
Sag doch mal, aus welchem Programm du die Daten rauskopierst. Vielleicht kommst du ja mit ControlCommand/ ControlGetText etc. weiter. Hast du versucht die Controls mit dem AutoIt-Windows-InfoTool zu identifizieren?
-
Es funktioniert problemlos:
[autoit]
[/autoit]
;=== Test_param.au3
$param = ''
If $CMDLINE[0] Then
For $i = 1 To $CMDLINE[0]
$param &= $CMDLINE[$i] & @CRLF
Next
EndIf
MsgBox(0, '', $param)
[autoit]
Mit folgendem Befehl aufrufen:Run(@AutoItExe & ' Test_param.au3 "param1" "param2" "param3"')
[/autoit]Edit: Die Gänsefüßchen für die Parameter sind nicht zwingend. Ich verwende sie für eine optisch bessere Abtrennung.
-
Der Fehler entsteht beim Splitten, du verwendest als Trenner @CRLF - auf Webseiten wird aber i.A. @LF verwendet. Probiers mal damit zu splitten.
-
keine SciTEUser.properties gibt.
SciTe ist allerdings installiert.... und nu?
Dann hast du bisher noch keine Userspezifischen Einstellungen vorgenommen - erst dann wird diese Datei erstellt. Kannst sie also ohne Bedenken auch als leere Textdatei erstellen (Suffix ist .properties !). -
Wenn man statt der Buchstaben deren ASCII-Werte verwendet, kann man das kpl. Skript mittels Array und Schleife in ein paar Zeilen unterbringen.

Aber wenn du echt zu faul bist die Zeilenumbrüche hier einzufügen, ist dir wohl nicht an Hilfe gelegen. -
1. Wenn du hier nicht lesbaren Code reinstellst, brauchst du dich nicht über Nachfragen wundern.
2. Herumschreien mögen wir hier gar nicht. Du möchtest Hilfe. Also befleißige dich eines vernünftigen Umgangstones. -
Keinerlei Includes - dann sollte der Ordner "Aut2Exe" ausreichen. Enthält neben der "Aut2Exe.exe" auch die StandardIcon und die EXE-Komprimierung.
Wie es verwendet wird, findest du in der Hilfe unter
> Using AutoIt
>> Compiling Scripts
>>> Method 3 - The Command Line -
Wie Hellboy richtig sagte, wenn es nur minimale Veränderungen sind einfach INI oder auch CmdLine nutzen.
Was du zum Kompilieren brauchst, hängt davon ab, welche Includes deine Skripte erfordern. Denn diese müssen selbstverständlich neben der Aut2Exe.exe alle vorliegen. -
der Windows Explorer.exe den möchte ich aber nicht offnen sondern das Kontextmenu wo steht eigenschaft und an taskleiste lösen.
Uns wäre sehr geholfen, wenn bei Systemfragen auch das System benannt wird. Ich habe XP und bei mir gibt es dergleichen nicht. -
Habe WinXP und sehe mich mal wieder bestätigt, dass Win7 wohl eher etwas für Grafikenthusiasten und Effektliebhaber ist. OK, wer es mag.
Einfach ein maximiertes Fenster an der Titelleiste anklicken und herunterziehen um es wiederherzustellen, bzw. ein nicht maximiertes Fenster einfach nach oben schieben um es zu maximieren.
Funktioniert (aber ein Klick auf "Verkleinern/Maximieren" bewirkt doch dasselbe und geht schneller).
Ebenfalls kann man das Fenster nach rechts oder links schieben, um es auf genau der Hälfte des Bildschirmes anzuzeigen.
Da regt sich auf meinem PC gar nix, aber kein Problem, da ich kein Freund von Effekten bin.
@fukey: Nicht dass du mich mißverstehst, ich möchte deine Leistung nicht schmälern. Ich bin wohl einfach zu alt für solche Gimmicks.
Meine PC's bekommen immer das Klassik-Design und wo es irgend geht verzichte ich eh auf Mausklickerei, Tastatur ist da weitaus schneller.
-
Alternative, bei der du auch gleich die Position des Icon in der Icondatei bekommst:
[autoit]$oWS = ObjCreate("WScript.Shell")
[/autoit][autoit][/autoit][autoit]
$sLinkFile = 'C:\Dokumente und Einstellungen\All Users\Desktop\Nokia Ovi Suite.lnk'
$oLink = $oWS.CreateShortcut($sLinkFile)ConsoleWrite( _
[/autoit]
"Arguments" & @TAB & @TAB & $oLink.Arguments & @CRLF & _
"Description" & @TAB & @TAB & $oLink.Description & @CRLF & _
"HotKey" & @TAB & @TAB & $oLink.HotKey & @CRLF & _
"IconLocation, Index" & @TAB & $oLink.IconLocation & @CRLF & _
"WindowStyle" & @TAB & @TAB & $oLink.WindowStyle & @CRLF & _
"WorkingDirectory" & @TAB & $oLink.WorkingDirectory & @CRLF) -
Bau dir doch zusätzlich einen Object-Error-Handler ein.
Aus der Hilfe:Spoiler anzeigen
[autoit]$oMyError = ObjEvent("AutoIt.Error","MyErrFunc") ; Initialize a COM error handler
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]; This is my custom defined error handler
[/autoit]
Func MyErrFunc()
Msgbox(0,"AutoItCOM Test","We intercepted a COM Error !" & @CRLF & @CRLF & _
"err.description is: " & @TAB & $oMyError.description & @CRLF & _
"err.windescription:" & @TAB & $oMyError.windescription & @CRLF & _
"err.number is: " & @TAB & hex($oMyError.number,8) & @CRLF & _
"err.lastdllerror is: " & @TAB & $oMyError.lastdllerror & @CRLF & _
"err.scriptline is: " & @TAB & $oMyError.scriptline & @CRLF & _
"err.source is: " & @TAB & $oMyError.source & @CRLF & _
"err.helpfile is: " & @TAB & $oMyError.helpfile & @CRLF & _
"err.helpcontext is: " & @TAB & $oMyError.helpcontext _
)
Local $err = $oMyError.number
If $err = 0 Then $err = -1
$g_eventerror = $err ; to check for after this function returns
Endfunc -
Funktioniert doch tadellos:
[autoit]#include <Array.au3>
[/autoit]
$aLnk = FileGetShortcut('C:\Dokumente und Einstellungen\All Users\Desktop\Nokia Ovi Suite.lnk')
_ArrayDisplay($aLnk)
Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist.