Fremdsoftwaremenüs aufrufen?

  • Hi Leute,

    folgendes Problem: Ich habe auf Arbeit eine Fremdsoftware welche komplett in Englisch ist und viele Menüs und Untermenüs besitzt. Da viele Mitarbeiter kaum Englisch können und in vielen Menüs von der Anwendung nix zu suchen haben, möchte quasi eine vereinfachte Oberfläche erstellen, welche im Vordergrund läuft und links zu den wichtigsten Einträge des Hauptprogrammes auf Deutsch enthält. Gibt es in Autoit irgendeine udf oder so mit der ich auf die Menüeinträge eines anderen Programmes zugreifen kann. Controlklick fällt weg, da die hauptanwendung minimiert laufen soll und es außerdem zu fehleranfällig ist.

    Beispiel:

    [autoit]


    #include <GUIConstants.au3>

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

    GUICreate("Meine GUI-Buttons") ; erstellt ein GUI-Fenster welches mittig ausgerichtet wird

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

    Opt("GUICoordMode",2)
    $Button_1 = GUICtrlCreateButton ("Starte den Editor", 10, 30, 100)

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

    GUISetState () ; zeigt das GUI-Fenster mit 2 Buttons
    ; die GUI läuft bis sie geschlossen wird
    While 1
    $msg = GUIGetMsg()
    Select
    Case $msg = $GUI_EVENT_CLOSE
    ExitLoop
    Case $msg = $Button_1
    Run('Notepad.exe') ; Startet/Öffnet den Editor
    EndSelect
    Wend

    [/autoit]

    jetzt möchte ich das er nachdem notepad gestartet wurde z.B. die Hilfe von Notepad öffnet.

  • Also ich glaube das man das mit autoit nicht kann aber sicher bin ich mir nicht .

    Jedoch könntest du mit winMove das fenster so weit weg machen und dan mit controlsend drauf zugreifen


    Edit so gets auch :


    Spoiler anzeigen
    [autoit]


    #include <GUIConstants.au3>
    GUICreate("Meine GUI-Buttons") ; erstellt ein GUI-Fenster welches mittig ausgerichtet wird
    Opt("GUICoordMode",2)
    $Button_1 = GUICtrlCreateButton ("Starte den Editor", 10, 30, 100)

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

    GUISetState () ; zeigt das GUI-Fenster mit 2 Buttons
    ; die GUI läuft bis sie geschlossen wird
    While 1
    $msg = GUIGetMsg()
    Select
    Case $msg = $GUI_EVENT_CLOSE
    ExitLoop
    Case $msg = $Button_1
    Run('Notepad.exe') ; Startet/Öffnet den Editor
    WinWait("Unbenannt -")
    WinActivate("Unbenannt - ", "")
    WinMenuSelectItem("Unbenannt - ", "", "&Datei", "Seite ein&richten..." )
    EndSelect
    Wend

    [/autoit]

    Einmal editiert, zuletzt von FunH@cker (27. Juni 2009 um 20:06)

  • Danke für die schnelle Antwort :thumbup:

    Hätt da noch was ;)
    Kann man mit Autoit Menüs anderer Software für den Benutzer Sperren?

    So das man in FunH@cker seinem Beispiel z.B. nur die Papiergröße auswählen und ändern könnte?

  • Hi,

    warum versuchst Du nicht einfach das Menü des geheimnisvollen Programmes direkt zu manipulieren !?

    Du könntest den entsprechenden Menüelementen den übersetzten Text unterschieben und die, die der Benutzer nicht nutzen darf deaktivieren ...


    Gruß
    Greenhorn


  • Hi,

    warum versuchst Du nicht einfach das Menü des geheimnisvollen Programmes direkt zu manipulieren !?

    Du könntest den entsprechenden Menüelementen den übersetzten Text unterschieben und die, die der Benutzer nicht nutzen darf deaktivieren ...


    Gruß
    Greenhorn

    Dieses "geheimnisvolle" Programm ist die Benutzeroberfläche einer Produktionsanlage. Dafür möchte ich verschiedene Zugriffshierachien aufbauen. Da man, so wie es jetzt ist, auch viel an der Anlage kaputt machen kann :thumbdown:

    Wie könnte diese manipulation aussehen?
    Ein Fenster drüberlegen?

  • Hi mir ist grad eingefallen das man doch mit

    [autoit]

    ControlDisable

    [/autoit]

    steuerelemte sperren kann oder ?

  • ja corett

    Spoiler anzeigen


    ControlDisable
    --------------------------------------------------------------------------------

    Sperrt/deaktivert ein Steuerelement.


    ControlDisable ( "title", "text", controlID)


    Parameter

    title Der Titel des Fensters, auf das zugegriffen werden soll.
    text Der Text des Fensters, auf das zugegriffen werden soll.
    controlID Die ID des Steuerelements, das beeinflusst werden soll. Siehe Controls. ,die würde man zb mit dem autoit windows tools bekommeni


    ich wüde diebutton alle disabelen und über hotkey einzelne button enabeln bzw klicken
    sollte machbar sein

    2 Mal editiert, zuletzt von rewejo (28. Juni 2009 um 04:17)

  • Ich werde mal versuchen etwas zu basteln, kann aber ein paar Tage dauern ...


    LG
    Greenhorn

    Lass uns an deinen Gedanken teilhaben, will schließlich auch was bei lernen :rolleyes:


    Hi mir ist grad eingefallen das man doch mit

    [autoit]

    ControlDisable

    [/autoit]

    steuerelemte sperren kann oder ?

    Genial, hätte nie gedacht das Autoit so "mächtig" ist... :rock:

    Womit schafft Autoit das? Was passiert da intern, wenn ich so eine func aufrufe? Jemand ne Ahnung? Würd gern verstehen warum das funktioniert :huh:

  • Hi,

    Control... () funktioniert nicht mit Menüs. :(

    Habe aber schon eine Lösung gefunden, muss halt noch ein bisserl testen.
    Deaktivieren habe ich schon hinbekommen, jetzt nur noch den Text des Elements ändern, dann haben wir eine Basis. ;)


    Gruß
    Greenhorn


  • Das gibt es doch alles schon ;)

    Die GuiMenu.au3 kann das schon alles! Hier mal ein Beispiel mit Scite. Zum neuzeichnen der Menüs vielleicht einmal das Programm minimieren und dann wieder herstellen.

    Spoiler anzeigen
    [autoit]

    #include <GuiMenu.au3>

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

    $hwnd = WinGetHandle('')
    $hmenu = _GUICtrlMenu_GetMenu($hwnd)
    $hmenu_Datei = _GUICtrlMenu_GetItemSubMenu($hmenu, 0)

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

    #Region Hauptmenüs
    _GUICtrlMenu_SetItemText($hmenu, 0, '&Datei')
    _GUICtrlMenu_SetItemText($hmenu, 1, '&Bearbeiten')
    _GUICtrlMenu_SetItemText($hmenu, 2, '&Suchen')
    _GUICtrlMenu_SetItemText($hmenu, 3, '&Ansicht')
    _GUICtrlMenu_SetItemText($hmenu, 4, '&Tools')
    _GUICtrlMenu_SetItemText($hmenu, 5, '&Optionen')
    _GUICtrlMenu_SetItemText($hmenu, 6, 'S&prachen')
    _GUICtrlMenu_SetItemText($hmenu, 7, '&Buffer')
    _GUICtrlMenu_SetItemText($hmenu, 8, '&Hilfe')
    #EndRegion

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

    #Region Untermenü Datei
    _GUICtrlMenu_SetItemText($hmenu_Datei, 0, '&Neu')
    _GUICtrlMenu_SetItemText($hmenu_Datei, 1, 'Ö&ffnen')
    _GUICtrlMenu_SetItemText($hmenu_Datei, 2, 'Öffne &gewählte Datei')
    _GUICtrlMenu_SetItemText($hmenu_Datei, 3, '&Zurück')
    _GUICtrlMenu_SetItemText($hmenu_Datei, 4, 'S&chließen')
    _GUICtrlMenu_SetItemText($hmenu_Datei, 5, '&Speichern')
    _GUICtrlMenu_SetItemText($hmenu_Datei, 6, 'Speichern &als')
    _GUICtrlMenu_SetItemText($hmenu_Datei, 7, '&Kopie speichern')
    _GUICtrlMenu_SetItemText($hmenu_Datei, 8, '&Entschlüsseln')
    _GUICtrlMenu_SetItemText($hmenu_Datei, 9, 'E&xportieren')
    #EndRegion

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

    #Region Menupunkte sperren
    _GUICtrlMenu_SetItemDisabled($hmenu, 2)
    _GUICtrlMenu_SetItemDisabled($hmenu, 3)
    #EndRegion

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

    #Region Untermenüpunkte sperren
    _GUICtrlMenu_SetItemDisabled($hmenu_Datei, 0)
    _GUICtrlMenu_SetItemDisabled($hmenu_Datei, 1)
    _GUICtrlMenu_SetItemDisabled($hmenu_Datei, 2)
    _GUICtrlMenu_SetItemDisabled($hmenu_Datei, 3)
    #EndRegion

    [/autoit]