1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. Zoli1972

Beiträge von Zoli1972

  • Aufgabenplanungseintrag mit COM-Objekten erstellen - suche fehlendes COM-Objektelement

    • Zoli1972
    • 3. Dezember 2012 um 22:04

    Leider habe ich mit der _CreateTask() Funktion aus der UDF aus diesem Thread (Post #10) kleinere Probleme.

    Ich kann mit der Funktion meinen Aufgabenplaner-Eintrag nicht so erzeugen, daß er unter Windows 7 auch das Programm im Windows 7-Modus ausführt. Stattdessen steht da immer "Windows Vista, Windows Server 2008". Zum besseren Verständnis hier ein Bild von der Option im GUI des Aufgabenplaners. Die, die ich meine ist rot umrandet:

    Klick mich

    Die erwähnte UDF enthält leider keinen Zugang zu dem COM-Objektelement, mit dem ich diesen Wert verändern könnte. Auch die Dokumentation von MS zum Aufgabenplaner schweigt sich darüber scheinbar aus, welches COM-Objektelement das wäre, oder vielleicht verstehe ich nur nicht, was da steht. Brauche daher Hilfe von jemandem, der sich mit COM-Objekten und speziell den Elementen des Aufgabenplaners auskennt.

    Zoli

  • TaskScheduler / Aufgabenplaner mittels ObjCreate("Schedule.Service") ansteuern

    • Zoli1972
    • 31. Oktober 2012 um 11:09

    Hi,

    Leider startet das Script aus Post #10 bei mir nicht. Es gibt auch keinerlei Fehlermeldung. Egal, ob ich das Script als Exe kompiliere, und dann als Admin starte, oder als User. Auch aus Scite heraus keine Funktion, keine Fehlermeldung. Die Aufgabe wird einfach nicht erstellt. Nutze Win7Pro 32Bit.

    Was kann das Problem sein?

    Hier mein Script:

    Code
    #include <IncludeCreateTask.au3>
    
    
    $StrDownloadLink = "http://www.teamviewer.com/download/TeamViewerPortable.zip"
    $StrDownloadPath = @UserProfileDir & "\Downloads\TeamViewerPortable.zip"
    $StrExtractPath = StringLeft($StrDownloadPath, StringLen($StrDownloadPath)-4)
    $StrExtractedFilesPath = @UserProfileDir& "\Downloads\TeamViewerPortable\"
    $StrOrgExePath = @UserProfileDir & "\Downloads\TeamViewerPortable\TeamViewer.exe"
    $StrProgFilesPath = @ProgramFilesDir & "\TeamViewerPortable\"
    $StrExePath = $StrProgFilesPath & "TeamViewer.exe"
    $StrProgFilesPathEx = StringLeft($StrProgFilesPath, StringLen($StrProgFilesPath)-1)
    $StrShortcutFileName = "Teamviewer - Fernwartung.lnk"
    $StrShortcutFilePath = @DesktopCommonDir & "\" & $StrShortcutFileName
    
    
    ...
    
    
    _CreateTask("Teamviewer", "Startet Teamviewer als Admin", 1, $StrExePath, $StrProgFilesPathEx)
    Alles anzeigen

    und in der IncludeCreateTask.au3:

    Code
    #include-once
    Dim  $oMyError, $ErrorFound = False
    
    
    ;==================================================================================
        ; Function:            _CreateTask($TaskName, $TaskDescription, $TriggerEvent, $StartTrigger, $EndTrigger, $DaysOfWeek, $DaysOfMonth, $MonthOfYear, $WeeksOfMonth, $DaysInterval, $Interval, $RepetitionEnabled, $LogonType, $RunLevel, $Username, $Password, $Program, $WorkingDirectory = "", $Arguments = "", $RunOnlyIfNetworkAvailable = True)
        ; Description:        Creates a scheduled task
        ; Parameter(s):        $h_Window     - Handle to the Window to update
        ;                    $i_Mode     - Update Mode; 0=Small Update; 1=Normal Update.
        ; Return Value(s):    On Success  - Return 1, @ERROR = 0
        ;                    On Failure  - Sets @ERROR = 1, Return 0
        ;                                - Wrong OS (Needs Vista or higher) @Error = 2 Return 0
        ; Author(s):        Unknown (http://www.autoit.de/index.php?page=Thread&postID=214517#post214517)
        ; Changes:            Veronesi
        ; Note(s):            Works only on Win7 and above (Perhaps also Win Vista, but not tested!)
        ; Example:            _CreateTask("Testname", "Description of this task", 3, "2011-03-30T08:00:00", "", 2, 1, 1, 1, 1, "PT1H", False, 3, 0, "", "", '"c:\windows\system32\notepad.exe"', "", "", True)
        ;==================================================================================
    
    
    #cs
        $TaskName                 => String, Free text
    
    
        $TaskDescription         => String, Free text
    
    
        $TriggerEvent            => http://msdn.microsoft.com/en-us/library/aa383898%28v=VS.85%29.aspx
                                (0: TASK_TRIGGER_EVENT; Triggers the task when a specific event occurs.) => Not working yet
                                1: TASK_TRIGGER_TIME; Triggers the task at a specific time of day.
                                2: TASK_TRIGGER_DAILY; Triggers the task on a daily schedule. For example, the task starts at a specific time every day, every-other day, every third day, and so on.
                                3: TASK_TRIGGER_WEEKLY; Triggers the task on a weekly schedule. For example, the task starts at 8:00 AM on a specific day every week or other week.
                                4: TASK_TRIGGER_MONTHLY; Triggers the task on a monthly schedule. For example, the task starts on specific days of specific months.
                                5: TASK_TRIGGER_MONTHLYDOW; Triggers the task on a monthly day-of-week schedule. For example, the task starts on a specific days of the week, weeks of the month, and months of the year.
                                6: TASK_TRIGGER_IDLE; Triggers the task when the computer goes into an idle state.
                                7: TASK_TRIGGER_REGISTRATION; Triggers the task when the task is registered.
                                8: TASK_TRIGGER_BOOT; Triggers the task when the computer boots. => Needs Admin-Rights!
                                9: TASK_TRIGGER_LOGON; Triggers the task when a specific user logs on. => Needs Admin-Rights!
                                11:TASK_TRIGGER_SESSION_STATE_CHANGE; Triggers the task when a specific session state changes. => Needs Admin-Rights!
    
    
        $StartTrigger            => String with Start time / date (Year-Month-DayTHour:Min:Sec) E.g. "2011-03-30T08:00:00"
    
    
        $EndTrigger                => String with End time / date (Year-Month-DayTHour:Min:Sec) E.g. "2011-03-30T08:00:00"
    
    
        $DaysOfWeek                => Integer; 1 = Sunday / 2 = Monday / 4 = Tuesday / 8 = Wednesday / 16 = Thursday / 32 = Friday / 64 = Saturday (http://msdn.microsoft.com/en-us/library/aa384024(v=VS.85).aspx)
                                   3 = Sunday AND Monday!
                                   This value works only in TriggerEvent 3 or 5
    
    
        $DaysOfMonth            => Integer http://msdn.microsoft.com/en-us/library/aa380735(VS.85).aspx
                                This value is only noted when $TriggerEvent = 4
                                Day 1; 1
                                Day 2; 2
                                Day 3; 4
                                Day 4; 8
                                Day 5; 16
                                Day 6; 32
                                Day 7; 64
                                Day 8; 128
                                Day 9; 256
                                Day 10; 512
                                Day 11; 1024
                                Day 12; 2048
                                Day 13; 4096
                                Day 14; 8192
                                Day 15; 16384
                                Day 16; 32768
                                Day 17; 65536
                                Day 18; 131072
                                Day 19; 262144
                                Day 20; 524288
                                Day 21; 1048576
                                Day 22; 2097152
                                Day 23; 4194304
                                Day 24; 8388608
                                Day 25; 16777216
                                Day 26; 33554432
                                Day 27; 67108864
                                Day 28; 134217728
                                Day 29; 268435456
                                Day 30; 536870912
                                Day 31; 1073741824
                                Last Day; 2147483648
    
    
        $MonthOfYear            => http://msdn.microsoft.com/en-us/library/aa380736(v=VS.85).aspx
                                This value is only noted when $TriggerEvent = 4
                                January; 1
                                February; 2
                                March; 4
                                April; 8
                                May; 16
                                June; 32
                                July; 64
                                August; 128
                                September; 256
                                October; 512
                                November; 1024
                                December; 2048
                                January + February = 3...
    
    
        $WeeksOfMonth            => http://msdn.microsoft.com/en-us/library/aa380733(v=VS.85).aspx
                                This value is only noted when $TriggerEvent = 5
                                First; 1
                                Second; 2
                                Third; 4
                                Fourth; 8
                                Fifth; 16
                                Last; 32
    
    
        $DaysInterval            => Integer of Days Interval; http://msdn.microsoft.com/en-us/library/aa380660(v=VS.85).aspx
                                This value is only noted when $TriggerEvent = 2
    
    
        $Interval                => String for Interval; http://msdn.microsoft.com/en-us/library/aa381138(v=VS.85).aspx
                                P<days>DT<hours>H<minutes>M<seconds>S (for example, "PT5M" is 5 minutes, "PT1H" is 1 hour, and "PT20M" is 20 minutes). The maximum time allowed is 31 days, and the minimum time allowed is 1 minute.
    
    
        $RepetitionEnabled        => True = Interval Trigger enabled / False = Interval Trigger disabled
    
    
        $LogonType                => 2 = TASK_LOGON_S4U / Independant from an userlogin
                                   3 = User must already be logged in
                                   ;http://msdn.microsoft.com/en-us/library/aa382075%28v=VS.85%29.aspx
    
    
        $RunLevel                => 0 = lowest, 1 = highest; http://msdn.microsoft.com/en-us/library/aa382076%28v=VS.85%29.aspx
                                Highest Need Admin-Rights!
    
    
        $Username                => String with domainname "\" and Username. Use blank string ("") for actual user
    
    
        $Password                => Password for the specified user
    
    
        $Program                => String, Full Path and Programname to run
    
    
        $WorkingDirectory        => Optional String
    
    
        $Arguments                => Optional String
    
    
        $RunOnlyIfNetworkAvailable => Optional Boolean (Default = True)
    
    
    #ce
    
    
    
    
    Func _CreateTask($TaskName, $TaskDescription, $RunLevel, $Program, $WorkingDirectory = "", $Arguments = "", $RunOnlyIfNetworkAvailable = False)
        If @OSVersion = "WIN_XP" Or @OSVersion = "WIN_XPe" Or @OSVersion = "WIN_2000" Then Return SetError (2, 2, 0)
    
    
    ;Inserted by Zoli1972
    local $TriggerEvent, $StartTrigger, $EndTrigger, $DaysOfWeek, $DaysOfMonth, $MonthOfYear, $WeeksOfMonth, $DaysInterval, $Interval, $RepetitionEnabled, $LogonType
    local $Username, $Password
    ;End Inserted by Zoli1972
    
    
        Local $oService, $oFolder, $oTaskDefinition, $oRegistrationInfo, $oSettings
        Local $oPrincipal, $oColActions, $oAction, $oTrigger, $oColTriggers, $oTriggerRepetition
    
    
        If $TaskName = "" Or $Program = "" Then Return SetError (1,1,1)
    
    
        ;http://www.scriptinganswers.com/forum2/forum_posts.asp?TID=3282
        ;http://www.autoit.de/index.php?page=Thread&postID=214517#post214517
        ;http://msdn.microsoft.com/en-us/library/aa383898%28v=VS.85%29.aspx
        $oMyError = ObjEvent("AutoIt.Error", "MyCreateTaskErrFunc") ; Initialize a COM error handler
        $oService = ObjCreate("Schedule.Service")
        $oService.Connect()
    
    
        $oFolder = $oService.GetFolder("\")
        $oTaskDefinition = $oService.NewTask(0)
    
    
        $oRegistrationInfo = $oTaskDefinition.RegistrationInfo()
        $oRegistrationInfo.Description() = $TaskDescription
        $oRegistrationInfo.Author() = @LogonDomain & "\" & @UserName
    
    
        $oSettings = $oTaskDefinition.Settings()
        $oSettings.MultipleInstances() = 0 ;Starts a new instance while an existing instance of the task is running.
        $oSettings.DisallowStartIfOnBatteries() = False
        $oSettings.StopIfGoingOnBatteries() = False
        $oSettings.AllowHardTerminate() = True
        $oSettings.StartWhenAvailable() = True ;Start task as soon as possible when task missed
        $oSettings.RunOnlyIfNetworkAvailable() = $RunOnlyIfNetworkAvailable
    
    
        $oSettings.Enabled() = True ;True ; The task can be performed only when this setting is True.
        $oSettings.Hidden() = False
        $oSettings.RunOnlyIfIdle() = False
        $oSettings.WakeToRun() = False
        $oSettings.ExecutionTimeLimit() = "P1D" ; When this parameter is set to Nothing, the execution time limit is infinite.
        $oSettings.Priority() = 5 ;http://msdn.microsoft.com/en-us/library/aa383070(v=VS.85).aspx 0 = Realtime, 10 = Idle
    
    
        $oPrincipal = $oTaskDefinition.Principal()
        $oPrincipal.Id() = @UserName
        $oPrincipal.DisplayName() = @UserName
        $oPrincipal.LogonType() = $LogonType
        $oPrincipal.RunLevel() = $RunLevel
    
    
        $oColTriggers = $oTaskDefinition.Triggers()
        $oTrigger = $oColTriggers.Create($TriggerEvent)
    
    
        $oTrigger.Id() = "TriggerID"
        $oTrigger.Enabled() = True
        $oTrigger.StartBoundary() = $StartTrigger
        $oTrigger.EndBoundary() = $EndTrigger
        If $TriggerEvent = 3 Or $TriggerEvent = 5 Then
            $oTrigger.DaysOfWeek() = $DaysOfWeek
        EndIf
    
    
        If $TriggerEvent = 4 Then
            $oTrigger.DaysOfMonth() = $DaysOfMonth
            $oTrigger.MonthsOfYear() = $MonthOfYear
        EndIf
    
    
        If $TriggerEvent = 5 Then
            $oTrigger.WeeksOfMonth() = $WeeksOfMonth
        EndIf
    
    
        If $TriggerEvent = 2 Then
            $oTrigger.DaysInterval() = $DaysInterval
        EndIf
    
    
        If $RepetitionEnabled Then
            $oTriggerRepetition = $oTrigger.Repetition()
            $oTriggerRepetition.Interval() = $Interval
        EndIf
    
    
        $oColActions = $oTaskDefinition.Actions()
        $oColActions.Context() = @UserName
        $oAction = $oTaskDefinition.Actions.Create(0)
        $oAction.Path() = $Program
        $oAction.WorkingDirectory() = $WorkingDirectory
        $oAction.Arguments() = $Arguments
    
    
        ; call rootFolder.RegisterTaskDefinition(strTaskName, taskDefinition, FlagTaskCreate, , , LogonTypeInteractive)
        $oFolder.RegisterTaskDefinition($TaskName, $oTaskDefinition, 6, $Username, $Password, $LogonType, "")
    
    
        If $ErrorFound Then Return SetError(1,1,0)
        Return 1
    EndFunc    ;==>_CreateTask
    
    
    Func MyCreateTaskErrFunc()
        $ErrorFound = True
        Return 0
    
    
    
    
        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
        Local $g_eventerror
        If $err = 0 Then $err = -1
    
    
        $g_eventerror = $err ; to check for after this function returns
    EndFunc   ;==>MyCreateTaskErrFunc
    Alles anzeigen

    Ich habe eigentlich nur soviel verändert, daß ich die für mich unnötigen Parameter fest codiert habe. Siehe dazu die von mir hinzugefügten Zeilen.

    Was mache ich falsch?

    Zoli

  • Medion Akoya Laptop - "PC Beep" abstellen - Wie?

    • Zoli1972
    • 4. Dezember 2011 um 19:37

    Hallo, Leute!

    Sorry, daß ich mich so lange nicht mehr gemeldet habe, hatte nicht soviel Zeit, mich um das Problem zu kümmern. Es besteht weiterhin, und ich habe zwecks Lösung noch ein wenig weiter geforscht. Hinzuzufügen wäre vielleicht noch, daß ich bei jedem Neustart des Laptops das doofe PC Beep erneut ausmachen muß, die Einstellung scheint sich nicht korrekt in der Registry zu speichern.

    Das mit dem Abstellen des Beep-Treibers im Gerätemanager bringt leider nichts.

    Zwecks Dll-Call habe ich folgendes Schnipsel gefunden.

    [autoit]

    Func _SoundGetWaveVolume()
    Global $WaveVol = -1, $p, $ret
    Const $MMSYSERR_NOERROR = 0
    $p = DllStructCreate ("dword")
    If @error Then
    SetError(2)
    Return -2
    EndIf
    $ret = DllCall("winmm.dll", "long", "waveOutGetVolume", "long", -1, "long", DllStructGetPtr ($p))
    If ($ret[0] == $MMSYSERR_NOERROR) Then
    $WaveVol = Round(Dec(StringRight(Hex(DllStructGetData ($p, 1), 8), 4)) / 0xFFFF * 100)
    MsgBox(1,"", hex(DllStructGetData($p,1)))
    Else
    SetError(1)
    EndIf
    ;DllStructDelete ($p)
    Return $WaveVol
    EndFunc ;==>_SoundGetWaveVolume

    [/autoit]


    Allerdings bräuchte ich das Schnipsel umgebaut zum Schreiben der Einstellungen, und nicht zum Lesen. Leider kenne ich mich Dlls nicht besonderts gut aus. Das weitere Dumme ist auch noch, das Schnipsel hier behandelt den WaveOut-Volume, und ich schaffe es nicht, es auf PC Beep anzuwenden. Es scheint wohl so zu sein, daß der Dll-Call statt auf "waveOutGetVolume", auf "pcbeepGetVolume", oder so ähnlich anzuwenden wäre. Nur funktioniert das mit "pcbeepGetVolume" dummerweise eben nicht. Wenn ich nur eine Liste der anwendbaren Funktionen hätte...

    Übrigens, Douky: Dein Script habe ich derweil in Verwendung und arbeitet einwandfrei. Vielen Dank einstweilen.

    Grüße

    Zoli

  • Medion Akoya Laptop - "PC Beep" abstellen - Wie?

    • Zoli1972
    • 29. März 2011 um 20:19

    BugFix :

    Vielen Dank.

    @pPanther:

    ebenso danke. Daß ich nicht um Dll-Call herumkomme, habe ich schon geahnt. Jetzt bräuchte ich noch die richtige Dll.

    Zoli

  • Medion Akoya Laptop - "PC Beep" abstellen - Wie?

    • Zoli1972
    • 26. März 2011 um 23:01

    Hallo,

    Vielen Dank erst mal. Das hilft mir schon mal weiter. Aber genau von dieser Funktion gibt es irgendwo auch ein Pendant, der das ohne verstecktes Öffnen eines Fensters über Winapi, mithilfe einer Dll hinbekommt. Das wäre super, wenn mir jemand sagen könnte, wie ich dann welche dll ansprechen muß, damit dieser Schalter "gesetzt" wird.

    EDIT:

    Es gibt wohl ei paar Schlüssel in der Registry, die anscheinend mit diesem Regler zu tun haben. Der eine ist {C57704A3-108F-4760-99BA-6369AD13345D}, der andere ist {093C0065-6B45-4582-87D7-5A6742F6E859}. Letzterer ist in HKLM\SYSTEM\ControlSet001\Control\Class\{093C0065-6B45-4582-87D7-5A6742F6E859}\Settings\Drv5152\Mute0_RearLineOutWave3_{093c0065-6b45-4582-87d7-5a6742f6e859} zu finden.

    Der Binary-Wert in diesem Schlüssel scheint mitunter der Mute-Schalter für besagten Regler zu sein. Den Eintrag gibt es an mehreren Stellen in der Registry. Wenn ich in der Lautstärkeregelung das "Mute" für diesen Regler setze, und dann die Anzeige in Regedit aktualisiere, bekomme ich als Wert für besagten Schlüssel 01 00 00 00. Ansonsten steht der auf einem 32-Bit-Wert, der durch die Stellung des Reglers irgendwie bestimmt wird. Wie, hab ich noch nicht rausbekommen. Meine Frage ist jetzt, wie kann ich mit RegWrite() einen binären Registry-Wert schreiben?

    Mein zweites Problem ist, ich habe mal versucht, den Wer manuell mit Regedit auf 01 00 00 00 zu setzen. Das ändert aber den Mute-Schalter in der Lautstärkeregelung nicht.

    Zoli

  • Medion Akoya Laptop - "PC Beep" abstellen - Wie?

    • Zoli1972
    • 26. März 2011 um 12:50

    Also das Ding hier ist uralt. Das BIOS kann sowas wie "anmelden als..." nicht, und außerdem, wenn 3 Einstellungen dort veränderbar sind, ist es schon viel. ;) Medion, halt.

    Nee, alles schon versucht. Der Speaker ist auch kein echter Piezo-Speaker, sondern ist als Funktion auf der Soundkarte des Laptops drauf. Daher auch als Regler in den Lautstärkeeinstellungen sichtbar. Somit wird der Tipp mit dem Montageschaum nicht helfen. Den Tipp mit der Registry habe ich auch schon versucht, auch den Treiber, den es im Gerätemanager gibt, deaktiviert, nichts hat geholfen. Einen Dienst namens "Beep" gibt es im Übrigen in msconfig.msc auch nicht, falls noch jemand vorschlagen möchte, diesen zu deaktivieren. Wie gesagt, alles schon durch. Was ich suche, ist eine UDF, die nicht nur die Standard-Regler der Lautstärkeeinstellungen per WinApi verstellen kann, sondern auch die Herstellerspezifischen, wie bei diesem Medion.

    Edit:

    Ich habe übrigens auch schon Eventghost versucht, um mich damit wenigstens vom Piep bei Ruhezustand zu befreien, aber manchmal passiert es eben, daß der Eventghost den Event "Ruhezustand" nicht schnell genug behandelt, und den Lautsprecher stummschaltet. Somit kommt das nervige vollgas-Piep noch manchmal durch.

    Auch, wenn ich den entsprechenden Regler in der Lautstärkeregelung auch 0 stelle, oder deaktiviere, ist er beim nächsten Neustart zu 90% sicher wieder auf Vollanschlag, und an.

    Zoli

  • Medion Akoya Laptop - "PC Beep" abstellen - Wie?

    • Zoli1972
    • 26. März 2011 um 11:31

    Hallo, Forum!

    Ich suche mir schon die Finger wund nach einer Möglichkeit, bei einem Medion Akoya Laptop in der Lautstärkesteuerung den Regler "PC Beep" dauerhaft auf 0 zu setzen. Windows XP "vergißt" diese Einstellungen immer, und das Laptop piept mich volles Rohr an, wenn ich es mitten in der Nach auf Ruhezustand versetze, oder das Ladekabel ab- oder anstecke. Damit meine Nachbarn nicht von dem Piep-Lärm immer aufwachen, brauche ich deshalb ein Script, das ohne die Lautstärke-Steuerung von Windows als Fenster zu öffnen, also am Besten über WinApi-Funktionen, an diese eine Einstellung rankommen kann. Es gibt wohl ein Script /UDF, das die Standard-Regler der Lautstärke-Steuerung auf diese Weise verstellen kann, aber "PC Beep" ist leider kein Standard-Regler. Somit fehlen mir auch die Handles dafür. Leider habe ich jetzt auch nicht den Link zur Hand, wo ich damals das Script / die UDF gefunden habe, das auf die Sound-Einstellungen zugreifen kann. Im Prinzip bräuchte ich davon eine Erweiterung, kenne mich aber zu wenig damit aus.

    Zoli

  • Brauche eine Funktion zum Auslesen des Handles der durch einen Prozess geöffneten Datei

    • Zoli1972
    • 4. März 2009 um 12:26
    Zitat

    Ist dir denn der Pfad vorher bekannt in dem die Datei gespeichert wird?

    Ja, der ist bekannt.

    Zitat

    Dann könntest du vllt prüfen bei welcher Datei sich die Größe ändert.

    OK. So ähnlich verfahre ich auch in meiner derzeitigen Script-Version. Nichts für ungut, ist eine gute Idee, aber das ist in meinem Script derzeit eher "zurechtgeprügelt" als gelöst, und mir etwas zu "dirty" programmiert, es können sich dabei Fehler einschleichen, die dann bewirken, daß vielleicht die falsche Datei umbenannt wird. Es gibt wie gesagt Tools, die das selbst können. Folglich muß es in Windows bereits eine Funktion geben, mit dessen Hilfe das möglich ist. Vielleicht WinApi? Nur leider finde ich nirgends was vergelichbares. :(

    Zoli

  • Brauche eine Funktion zum Auslesen des Handles der durch einen Prozess geöffneten Datei

    • Zoli1972
    • 4. März 2009 um 00:40

    Hallo,

    Ich habe ein kleines Script, das ein Aufnahmeprogramm steuern soll. Das Programm erzeugt dabei eine Datei, die nach Startdatum, Uhrzeit und aufgenommenem Programm benannt wird. Im Programm selbst läßt sich kein anderer Dateiname definieren. Deshalb müßte mein Script bereits während der laufenden Aufnahme duch eine Funktion Zugriff auf das Handle der durch das Aufnahmeprogramm geöffneten Datei erhalten, um daraus dann den Pfad und den Daeteinamen der Datei auszulesen. Nachdem dann das Aufnahmeprogramm das Schreiben in die Datei beendet und diese geschlossen hat, soll das Script die Datei, die ja dann namentlich bekann ist, nach meinen Bedürfnissen (Aufnahmetitel) umbenennen.

    Gibt es eine Funktion, die so ein File-Handle aus einem laufenden Prozess auslesen kann?

    Als Alternative habe ich noch ein kleines Kommandozeilen-Tool bei Microsoft gefunden, das sich "Handle" nennt. Das macht aber genau das umgekehrte von dem, was ich machen will. Der sucht nach dem zu einer Datei gehörenden Prozess. Ich will aber die zu einem zum Prozess gehörende Datei haben. Am Liebsten nach Endungen gefiltert, aber das ist eher zweitrangig.

    Ich habe hier: UDF Sammlung schon mal eine Funktion in einer UDF gefunden, die sich mit Prozessinfos beschäftigt, aber weiß nicht, ob man die dazu "frisieren" könnte, daß sie die Infos liefert, die ich brauche. Kann mir da jemand helfen?

    Grüße

    Zoli

  • Bildschirmschoner entfernen

    • Zoli1972
    • 28. Januar 2008 um 19:15

    Und auf Windows 2000???

    Zoli

  • Bildschirmschoner entfernen

    • Zoli1972
    • 28. Januar 2008 um 19:00

    Eigentlich wäre somit alles klar, wenn ich das Problem nicht hätte kein Informatikstudium gemacht zu haben ;)

    Ich bin was das angeht, leider fast schon ein "Laihe mit vertiefter Kenntnis in der Registry/in Autoit", der hier versucht, seinem PC etwas beizubringen. Kannst Du mir deshalb bitte folgende Begriffe erklären?

    -Was ist ein Teilbinär?
    -Was ist die Bitsummenbildung aus einem Hexwert. (was ein Hexwert ist, weiß ich ;) )

    Eigentlich geht es mir darum, daß mein Win2k-Rechner nicht andauernd in Ruhezustand geht, wenn bestimmte Proggies laufen. Die Proggies, um die es geht, brauchen fast keine CPU-Last, somit meint mein PC ständig, "idle" zu sein, was dann nach der voreingestellten Zeit den Ruhezustand zufolge hat. Mein Script soll das Vorhandensein der Proggies checken, und dann in Abhängigkeit davon für die Laufzeit der Proggies die Einstellungen des aktuellen Energieschemas so anpassen, daß kein Ruhezustand stattfindet. Nachher soll das Script die Einstellungen wieder so setzen, wie sie vorher waren. Das Script wäre soweit schon fertig. Mir fehlt jetzt nur noch der Teil mit dem RegRead/RegWrite für die Änderung.

    Zoli

  • Bildschirmschoner entfernen

    • Zoli1972
    • 28. Januar 2008 um 18:25

    Vielen Dank.

    Gibt es dazu auch irgendwo Beschreibungen, welcher Teil dieses Binärwertes was genau bewirkt? Würde mir das Erstellen solcher Profile nämlich gerne sparen, und stattdessen einfach eines der bereits vorhandenen per AutoIt-Funktion RegWrite() entsprechend verändern.

    Dabei würde mich interessieren, ob nach so einer Änderung ein re-Logon des Benutzers oder sogar ein Windows-Neustart zwingend durchgeführt werden muß, oder ob Windows irgendwie zur automatischen Übernahme der Änderungen "überredet" werden kann? (ich glaube eher ersteres) Das was ich nämlich vor habe, sollte ohne Neustart oder re-Logon funzen.

    Zoli

  • Bildschirmschoner entfernen

    • Zoli1972
    • 25. Januar 2008 um 16:18

    Hallo,

    sorry, wenn ich ein wenig vom Thema abweiche:

    Kann jemand von Euch mir sagen, wie ich auf diese Weise anstatt den Bildschirmschoner zu entfernen, eher die Zeit für den automatischen Ruhezustand auf einen bestimmten Wert setzen kann, oder diese automatik so per Script deaktivieren kann?

    Grüße

    Zoli

  • GUI im Hintergrund - Symbole blinken nicht, sollen aber!

    • Zoli1972
    • 5. April 2007 um 22:55

    Hallo, Forum!

    Ich habe ein Skript, in dem eine GUI erzeugt wird, in dem einige Icons blinken sollen. Das machen sie, indem die Icons gezeigt und wieder versteckt werden. Das tun sie auch, aber leider nur solange das GUI-Fenster den Focus hat. Wenn ich während das Skript ausgeführt wird, auf ein anderes Fenster klicke, stoppt das Blinken, und geht erst wieder weiter, wenn ich wieder auf mein GUI-Fenster klicke.

    Bitte sagt mir, wie ich dieses Problem lösen kann? Ich brauche unbedingt blinkende Icons.

    Euer Zoli

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™