Naja Windoof will halt die " haben. Also einfach Run('"test neu.exe"') machen und alles ist schick. Funktioniert zumindest bei mir Einwandfrei.
Beiträge von Moombas
-
-
Bzw. ich würde für solche Dateien immer eine Global Const setzen.
Das direkte auslesen des einzelnen Wertes hatte ich jetzt nicht vorgeschlagen, da ich nicht wusste, ob später noch mehr Werte zu der Sektion hinzukommen, die so behandelt werden sollen.
Aber ich würde wie Velted sonst auch einfach den Wert direkt ansprechen, als eine ganze Sektion.
-
Korrektur: siehe oben, dem Pfad fehlte das Drive -.-
-
Den Array brauch ich nicht abfangen, der Wert wird in die angegebene Variable übergeben und wird bei mir auch vernünftig gefüllt.
Und auch die Ini Datei wird bei mir nach den Änderungen einwandfrei neu geschrieben.
-
Versuchs mal so:
AutoIt
Alles anzeigenOpt('MustDeclareVars', 1) #include <File.au3> #include <FileConstants.au3> Global $sDrive = "", $pExcelFilePath = "", $sFileName = "", $sExtension = "" Global $aExcel = IniReadSection(@ScriptDir & "\test.ini", "EXCEL" ) Global $pExcelDir = $aExcel[ 1 ][ 1 ] Global $sExcelFile = FileOpenDialog( "Select Excel-File", $pExcelDir, "Excel-File (*.xlsx; *.xls)", $FD_FILEMUSTEXIST ) _PathSplit( $sExcelFile, $sDrive, $pExcelFilePath, $sFileName, $sExtension) $pExcelFilePath = $sDrive & $pExcelFilePath ;~ Global $pExcelFilePath = _PathSplit( $sExcelFile, $sDrive, $sDir, $sFileName, $sExtension)[ 1 ] & _PathSplit( $sExcelFile, $sDrive, $sDir, $sFileName, $sExtension)[ 2 ] ConsoleWrite( $pExcelDir & @CRLF & $pExcelFilePath & @CRLF & StringCompare( $pExcelDir, $pExcelFilePath ) & @CRLF ) If StringCompare($pExcelDir, $pExcelFilePath) <> 0 Then; And Not @error And Not $sExcelFile == "" Then IniDelete(@ScriptDir & "\test.ini", "EXCEL" ) IniWrite(@ScriptDir & "\test.ini", "EXCEL", "ExcelDir", $pExcelFilePath ) $pExcelDir = $pExcelFilePath EndIfSciTe 3.7.3
-
error: _PathSplit() called with Const or expression on ByRef-param(s).
-
Hallo JBO, bei deinem Beispiel zerschießt sich das GUI beim verschieben.
-
Hast du mal geschaut, was dir _AD_GetObjectsInOU zurück gibt (danach _ArrayDisplay($aUserIDs)) bzw. Casesensitiv ist das nicht oder (DisplayName <> displayName)?
-
Also, ich habe das Beispiel von Velted mal probiert und bei mir zerschießt sich die GUI nicht.
-
AspirinJunkie dein link funzt bei mir nicht. Daher hier nochmal: https://www.autoitscript.com/autoit3/docs/l…essFileName.htm
JBO: Das müsste auch gehen, da der komplette Pfad zurück gegeben wird. Bräuchtest also nur den Dateinamen entfernen, wenn du nur den Pfad brauchst.
-
Mit den richtigen Google "Begriffen" (autoit pfad eines programms über pid) gefunden
ThemaAnwendungspfad anhand der PID ermitteln
Hi,
hier mal eine Möglichkeit mit der PID den Pfad der Anwendung zu ermitteln.
Wird keine PID übergeben, gibt die Funktion den Pfad für die Anwendung des aktiven Fensters zurück.
(Versteckter Text)
Edit: Es gibt ja kaum was, was nicht schon jemand getan hat
Habe gerade eine ähnliche Lösung (1 Monat alt) im EN-Forum gefunden. Link
Naja, ich habs als Zweiter getan - der andere als Vorletzter.
BugFix1. April 2009 um 19:18 -
Das kannst du doch (wie bereits hier von water veranschaulicht als Code) immer mit einer Funktion realisieren (der ggf. die gescannte Seriennummer mitgegeben wird).
Aber die entsprechenden Variablen (die jedes mal am Anfang Gleich sein sollen) müssen natürlich Local definiert sein und nicht global.
Dann funktioniert das auch ohne Probleme.
-
Ohne Code, keine hilfe möglich.
-
-
Also ich rate bei Gaming zu Alienware (was ja die Dell Marke fürs Gaming ist).
Aber wenn wirklich nur reine Office Sachen (incl. Mail und Surfen) nutzt sind die meisten Dell einfach vom Kosten/Nutzen Faktor zu hoch angesetzt. Außer man legt Wert auf die gute Verarbeitung. Support kann ich leider nichts zu sagen, brauchten wir bisher noch nie

"Vergleichbar" wird halt schwer. Doof gesagt jeder aktuelle 0815 Laptop reicht dafür aus, wenn denn nicht doch noch mehr damit gemacht werden soll.
-
Support ist zu viel gesagt und das alles geschieht ohne Garantie oder Haftung! Alles auf deinen Angaben basierend und ohne jedes Recht auf Richtigkeit.
Nutzung (incl. Generierung der Exe) und Tests sind alle in Eigenverantwortung durchzuführen.
Siehe Kommentare!
AutoIt
Alles anzeigenOpt('MustDeclareVars', 1) #include <WinAPISysInternals.au3> #include <WindowsConstants.au3> Global Const $ExeName = 'PMWIN.EXE' WinClose(FindWindowHandle()) ;Laufendes Programm schließen ohne Force. Eine Meldung vom Programm sollte das schließen verhindern und den Dialog zeigen sleep(5000) ;Warten umdem Programm zeit zum schließen zu geben if ProcessExists($ExeName) Then ;Prüfen ob das Programm noch läuft, denn dann ist der Dialog hoch gekommen. Send("{ENTER}") ;Den Dialog mit Enter bestätigen ;hier müsste der Code zum Starten der Datensicherung rein, ist ja scheinbar nicht direkt über den Dialog startbar. ;Die Information zum starten der Datensicherung müsstest du nachreichen, da ich das Programm selber nicht habe ginge das nur über Tastatureingaben durchs Menü hangeln ;Wird nach dem Abschluss der Datensicherung das Programm selbstständig beendet? While ProcessExists($ExeName) ;Warten bis das Programm beendet wurde. Sleep(60000) ;Jede Minute prüfen ob Datensicherung bzw. der Prozess noch läuft, basierend auf deiner Annahme das dies über das Programm selber läuft. WEnd EndIf Shutdown($SD_SHUTDOWN) Func FindWindowHandle() Local $i, $hWnd Local Const $ProcessList = ProcessList() For $i = 1 to $ProcessList[0][0] if StringInStr($ProcessList[$i][0], $ExeName) Then ;~ $PID = $ProcessList[$i][1] $hWnd = _WinGetByPID($ProcessList[$i][1], 1) If BitAND(WinGetState($hWnd), $WIN_STATE_EXISTS) then ExitLoop EndIf Next if $hWnd = "" then Return -1 Else Return $hWnd EndIf EndFunc ;from https://www.autoitscript.com/forum/topic/136271-solved-wingethandle-from-wingetprocess/ Func _WinGetByPID($iPID, $iArray = 1) ; 0 Will Return 1 Base Array & 1 Will Return The First Window. Local $aError[1] = [0], $aWinList, $sReturn If IsString($iPID) Then $iPID = ProcessExists($iPID) EndIf $aWinList = WinList() For $A = 1 To $aWinList[0][0] If WinGetProcess($aWinList[$A][1]) = $iPID And BitAND(WinGetState($aWinList[$A][1]), 2) Then If $iArray Then Return $aWinList[$A][1] EndIf $sReturn &= $aWinList[$A][1] & Chr(1) EndIf Next If $sReturn Then Return StringSplit(StringTrimRight($sReturn, 1), Chr(1)) EndIf Return SetError(1, 0, $aError) EndFunc ;==>_WinGetByPID -
Kannst du mir den exe-Namen der Software nennen und den Fenstertitel von der Datensicherungsabfrage (Screenshot?)?
-
Ist das wirklich eine Anfrage für Gegenleistung?
Warum ich Frage:
1. Müsste mit ProcessClose() gehen (killen wäre ProcessTerminate()) aber korrigiert mich wenn ich mich hier irre.Diese Annahme war Falsch. Es ist WinClose()2. Könnte man mit einer Abfrage nach dem Fenster hin bekommen, bei der Bestätigung bin ich mir gerade nicht sicher. Aber Sicherung abwarten sollte über While ProcessExists() gehen (ich gehe davon aus das eine separate exe dafür genutzt wird).
3. wird über 4. normalerweise automatisch gemacht, wenn noch offene Programme da sind.
4. Wäre Shutdown()
Das Programm dann über den Taskplaner zur gewünschten Uhrzeit ausführen lassen.
-
Ich habe das auch gefunden aber mir jetzt nicht die verfügbaren Schalter angeschaut ob da ein passender dabei wäre.
-
Kannst du nicht einen Schalter für die Silent-Installation setzen, das diese Webseite am Ende nicht aufgerufen wird?