Brauche Hilfe

  • Mein Programm funktioniert zwar schon, ist aber nicht schön.
    Wie kann ich es anstellen, dass der Resource Hacker nicht angezeigt wird und das klingeln aufhört?
    Mein Code:

    Spoiler anzeigen

    #include
    #include
    #include
    #include
    #include
    #include


    Global $varProgName = "" , $varIcoName = ""

    #Region ### START Koda GUI section ### Form=
    $FormReplaceIcon = GUICreate("Replace icon", 352, 335, 440, 99)
    GUISetBkColor(0xA0AAA0)
    $Input1 = GUICtrlCreateInput("ResHacker.exe", 24, 40, 305, 21)
    $Input2 = GUICtrlCreateInput("ChromeLoader.exe", 24, 112, 305, 21)
    $Input3 = GUICtrlCreateInput("ICO.ico", 24, 176, 305, 21)
    $Input4 = GUICtrlCreateInput("VideoChromeLoader.exe", 24, 248, 305, 21)

    $lblHack = GUICtrlCreateLabel("Pfad zu Resource Hacker", 24, 24, 127, 17)
    $lblProg = GUICtrlCreateLabel("Pfad zur Programm exe", 24, 96, 113, 17)
    $lblIcon = GUICtrlCreateLabel("Pfad zum neuen Programm Icon", 24, 160, 155, 17)
    $btnHttp = GUICtrlCreateButton("Jetzt herunterladen", 168, 72, 107, 17, $WS_GROUP)
    $btnHackSuche = GUICtrlCreateButton("Suchen", 280, 72, 51, 17, $WS_GROUP)
    $btnProgSuche = GUICtrlCreateButton("Suchen", 280, 144, 51, 17, $WS_GROUP)
    $btnIconSuche = GUICtrlCreateButton("Suchen", 280, 208, 51, 17, $WS_GROUP)
    $btnProg = GUICtrlCreateLabel("Name des neuen Programms", 24, 232, 140, 17)
    $btnEnd = GUICtrlCreateButton("Abbrechen", 176, 280, 75, 25, $WS_GROUP)
    $Button6 = GUICtrlCreateButton("Ausführen", 256, 280, 75, 25, $WS_GROUP)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###
    $path1TV = @ScriptDir & '\ResHacker\ResHacker.exe'
    If Not FileExists ($path1TV) Then
    GUICtrlSetData ($Input1,"Pfad zu Resource Hacker")
    Else
    GUICtrlSetData ($Input1,$path1TV)
    EndIf
    $path2TV = @ScriptDir & '\ChromeLoader.exe'
    If Not FileExists ($path2TV) Then
    GUICtrlSetData ($Input2,"ChromeLoader.exe")

    Else
    GUICtrlSetData ($Input2,$path2TV)

    EndIf
    $path3TV = @ScriptDir & '\ICO.ico'
    If Not FileExists ($path3TV) Then
    GUICtrlSetData ($Input3,"ICO.ico")

    Else
    GUICtrlSetData ($Input3,$path3TV)

    EndIf
    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $btnEnd
    Exit
    Case $btnHttp
    $oIE = _IECreate ("http://cgi.zdnet.de/c/?s=32&t=http%3A%2F%2Fwww.zdnet.de%2Fwindows_system_verbessern_resource_hacker_download-39002345-30637-2.htm&dld_id=de0DKY")

    Case $btnHackSuche
    $message = "ResHacker.exe auszuwählen."

    $varHack = FileOpenDialog($message, "%USERPROFILE%\Documents", "Progam Files (*.exe)", 1 + 2)

    If @error Then
    MsgBox(4096,"","Keine Datei ausgewählt")
    Else
    GUICtrlSetData ($Input1,$varHack)
    $varHack = StringReplace($varHack, "|", @CRLF)
    #cs ----------------------------------------------------------------------------
    MsgBox(4096,""," Sie wählten " & $varHack)
    #ce ----------------------------------------------------------------------------
    EndIf

    Case $btnProgSuche
    $message = "Programm auszuwählen. (z.B. ChromeLoader.exe)"

    $varProg = FileOpenDialog($message, "%USERPROFILE%\Documents", "Progam Files (*.exe)", 1 + 2 )

    If @error Then
    MsgBox(4096,"","Keine Datei ausgewählt")
    Else
    GUICtrlSetData ($Input2,$varProg)
    $varProg = StringReplace($varProg, "|", @CRLF)
    #cs ----------------------------------------------------------------------------
    MsgBox(4096,""," Sie wählten " & $varHack)
    #ce ----------------------------------------------------------------------------
    EndIf

    $varProgName = $varProg
    Case $btnIconSuche
    $message = "Neues Icon auszuwählen."

    $varIcon = FileOpenDialog($message, "%USERPROFILE%\Documents", "Images (*.ico)", 1 + 2 )

    If @error Then
    MsgBox(4096,"","Keine Datei ausgewählt")
    Else
    GUICtrlSetData ($Input3,$varIcon)
    $varIcon = StringReplace($varIcon, "|", @CRLF)
    #cs ----------------------------------------------------------------------------
    MsgBox(4096,""," Sie wählten " & $varHack)
    #ce ----------------------------------------------------------------------------
    EndIf
    $varIcoName = $varIcon
    Case $Button6
    ;-------------------------------------------------------------------------------------------------------------------------
    If $varProgName = "" Then $varProgName = GUICtrlRead($Input2)
    ;MsgBox(4096,"",$varProgName )
    If $varIcoName = "" Then $varIcoName = GUICtrlRead($Input3)
    ;MsgBox(4096,"",$varIcoName )

    GUISetState (@SW_SHOW)
    _ausfueren()
    ExitLoop


    ;-------------------------------------------------------------------------------------------------------------------------

    EndSwitch
    WEnd


    Func _ausfueren()
    ; Jede Zeile zum Ändern kopieren ; Der Standardwert ist als erstes angegeben

    Opt("SendKeyDelay", 5) ; 5 msec
    Opt("WinTitleMatchMode",1 - 2) ;1=vom Anfang, 2=enthält, 3=genau, 4=fortgeschritten, -1 bis -4=Groß-/Klein ignorieren
    Opt("WinWaitDelay", 200) ; 250 msec
    If Not FileExists ($varProgName) Then
    MsgBox(4096,"Fehler"," Sie haben keine Progam File (*.exe) wählt!" )
    ;MsgBox(4096,"Fehler",$varProgName )
    Exit
    EndIf

    If Not FileExists ($varIcoName ) Then
    MsgBox(4096,"Fehler"," Sie haben keine Icon File (*.ico) wählt!" )
    Exit
    EndIf

    Opt("WinTitleMatchMode", 2)
    if not WinExists("Resource Hacker") Then
    Run(GUICtrlRead ($Input1), "", @SW_MAXIMIZE )
    EndIf
    WinSetState("Resource_Hacker",'',@SW_ENABLE)
    WinWaitActive ("Resource Hacker")
    WinActivate("Resource_Hacker")
    Send ("!f o")
    WinWaitActive ("Open file containing resource ...")
    Send (GUICtrlRead ($Input2))
    Send ("{ENTER}")
    WinWaitActive ("Resource Hacker")
    Send ("!a i")
    WinWaitActive ("Replace icon")
    Send ("!o")
    WinWaitActive ("Öffnen")
    Send (GUICtrlRead ($Input3))
    Send ("{ENTER}")
    WinWaitActive ("Replace icon")
    Send ("!r")
    WinWaitActive ("Resource Hacker")
    Send ("!f s")
    Send ("!f x")
    EndFunc


    Für Antworten bin ich immer dankbar!
    gabischatz

    Einmal editiert, zuletzt von gabischatz (7. Februar 2010 um 18:57)

  • Bei deinem Klingel Problem kann ich dir leider nicht weiterhelfen, aber du solltest vielleicht lieber mit ControlSend arbeiten, da es einfach sicherer ist falls der Benutzer das Fenster minimiert oder Ähnliches. Wenn du ControlSend verwendest kannst du theoretisch auch das Fenster minimieren und das Script arbeitet weiter ( klappt nicht bei allen Programmen).

  • Danke für den Hinweis
    nun klingelt es nicht mehr wäre nur noch das Flimmern abzustellen.


    Spoiler anzeigen
    [autoit]


    Func _ausfueren()
    ; Jede Zeile zum Ändern kopieren ; Der Standardwert ist als erstes angegeben
    Opt("WinDetectHiddenText",1)
    Opt("MouseCoordMode",0)
    Opt("SendKeyDelay", 5) ; 5 msec
    Opt("WinTitleMatchMode",1 - 2) ;1=vom Anfang, 2=enthält, 3=genau, 4=fortgeschritten, -1 bis -4=Groß-/Klein ignorieren
    Opt("WinWaitDelay", 100) ; 250 msec
    If Not FileExists ($varProgName) Then
    MsgBox(4096,"Fehler"," Sie haben keine Progam File (*.exe) wählt!" )
    ;MsgBox(4096,"Fehler",$varProgName )
    Exit
    EndIf
    If Not FileExists ($varIcoName ) Then

    [/autoit] [autoit][/autoit] [autoit]

    MsgBox(4096,"Fehler"," Sie haben keine Icon File (*.ico) wählt!" )
    Exit
    EndIf
    if not WinExists("Resource Hacker") Then
    Run(GUICtrlRead ($Input1), "", @SW_MAXIMIZE )
    EndIf
    WinWait("Resource Hacker","")
    If Not WinActive("Resource Hacker","") Then WinActivate("Resource Hacker","")
    WinWaitActive("Resource Hacker","")
    ControlSend("Resource Hacker","","","{CTRLDOWN}o{CTRLUP}")
    WinWait("Open file containing resource ...","&Suchen in:")
    If Not WinActive("Open file containing resource ...","&Suchen in:") Then WinActivate("Open file containing resource ...","&Suchen in:")
    WinWaitActive("Open file containing resource ...","&Suchen in:")
    ControlSend ("Open file containing resource ...", "&Suchen in:", "", GUICtrlRead ($Input2))
    ControlSend ("Open file containing resource ...", "&Suchen in:", "", "{ENTER}")
    WinWait("Resource Hacker","")
    If Not WinActive("Resource Hacker","") Then WinActivate("Resource Hacker","")
    WinWaitActive("Resource Hacker","")
    ControlSend("Resource Hacker","","","{ALTDOWN}a{ALTUP}i")
    WinWait("Replace icon in","&Open file with new ")
    If Not WinActive("Replace icon in","&Open file with new ") Then WinActivate("Replace icon in","&Open file with new ")
    WinWaitActive("Replace icon in","&Open file with new ")
    ControlSend("Replace icon in","&Open file with new ","","o")
    WinWait("Öffnen","&Suchen in:")
    If Not WinActive("Öffnen","&Suchen in:") Then WinActivate("Öffnen","&Suchen in:")
    WinWaitActive("Öffnen","&Suchen in:")
    ControlSend ("Öffnen", "&Suchen in:", "", GUICtrlRead ($Input3))
    ControlSend ("Öffnen", "&Suchen in:", "", "{ENTER}")
    WinWait("Replace icon in","&Open file with new ")
    If Not WinActive("Replace icon in","&Open file with new ") Then WinActivate("Replace icon in","&Open file with new ")
    WinWaitActive("Replace icon in","&Open file with new ")
    ControlSend("Replace icon in","&Open file with new ","","r")
    WinWait("Resource Hacker","")
    If Not WinActive("Resource Hacker","") Then WinActivate("Resource Hacker","")
    WinWaitActive("Resource Hacker","")
    ControlSend("Resource Hacker","","","{CTRLDOWN}s{CTRLUP}{ALTDOWN}{F4}{ALTUP}")
    EndFunc

    [/autoit]
  • Hi habe noch einen Fehler, Switch-Case müsste doch viele Bedingungen prüfen, aber lade ich eine Datei mit

    [autoit]

    Case $btnHttp
    $oIE = _IECreate ("www.zdnet.de/Fwindows_system_verbessern_resource_hacker_download-39002345-30637-2.htm")

    [/autoit]

    sind alle anderen Buttons inaktiv. Meinen versuch etwas zu ändern mit
    HotKeySet siehe unten geht auch nicht.



    [autoit]

    HotKeySet("{Esc}","captureEsc")
    HotKeySet("^!x", "MeinExit")
    Func captureEsc()

    [/autoit][autoit][/autoit][autoit]

    HotKeySet("{Esc}") Send("{Esc}")
    HotKeySet("{Esc}","captureEsc")
    EndFunc
    Func MeinExit()
    Exit
    EndFunc

    [/autoit]
  • Beenden habe ich gefunden

    [autoit]


    HotKeySet("^!x", "MeinExit")

    [/autoit][autoit][/autoit][autoit]

    Func MeinExit()
    While 1
    Exit
    WEnd
    EndFunc

    [/autoit]

    Hat den keiner eine Idee wie ich zum Fenster zurück kehren kann.

    Einmal editiert, zuletzt von gabischatz (7. Februar 2010 um 15:47)

  • Ich danke allen Profis für ihre Hilfe!!!
    Habe es selber herausgefunden.

    [autoit]


    $var = "http://www.zdnet.de/windows_system_verbessern_resource_hacker_download-39002345-30637-2.htm"
    $oIE = _IECreate ($var,0,1,0 )

    [/autoit]

    Fehler hafter Aufruf 0 = Sofort nächsten Befehl ausführen, nicht warten bis die Seite geladen ist, hatte gefehlt.