Deutsches AutoHotkey Homepage AutoHotkey Community
Wir helfen uns gegenseitig aus der Patsche
 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   RegistrierenRegistrieren 
 ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

Script Control
Gehe zu Seite 1, 2  Weiter
 
Neues Thema eröffnen   Neue Antwort erstellen    AutoHotkey Community Foren-Übersicht -> Skripte & Funktionen
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
DerRaphael



Anmeldedatum: 09.01.2008
Beiträge: 1261
Wohnort: 127.0.0.1

BeitragVerfasst am: Fr Jan 25, 2008 10:05 pm    Titel: Script Control Antworten mit Zitat

Hallo,
ein update ... ein update! und wieso? nun, der restart des skriptes funktioniert jetzt mit angebenen parametern (sie werden übernommen) und nun auch direkt angezeigt... das gui ist jetzt in der größe veränderbar
ansonsten einfach nur nützlich



Die Parameter werden mit der Shimanovs Routine abgefragt. Parameter von Skripts anderer User / Skripts, die unter einem anderem Account gestartet wurden, lassen sich nicht einsehen. Den Teil habe ich bewusst weggelassen. In diesem Sourcecode ist der Link zu Shimanovs OrginalThread angegeben, so dass interessierte Programmierer das kleine Skript hier selbst um die gewünschte Funktionalität erweitern können. Hier kommt der Code:

Code:
; ScriptControl-v1-1.ahk / zLib License Style Relased / (c) & (w) 2008 by derRaphael(at)oleco.net
; Einfache Kontrolle über alle laufenden AHK Scripte

#Persistent
#NoEnv
Sendmode, Input
DetectHiddenWindows, ON
SetTitleMatchmode, 2

Menu, cMenu, Add, Editieren, AHKEDIT
Menu, cMenu, Add
Menu, cMenu, Add, Neu Starten, AHKRESTART
Menu, cMenu, Add, Beenden, AHKCLOSE
Menu, cMenu, Add
Menu, cMenu, Add, Eigenschaften, AHKPROPS

Menu, Tray, Icon, Shell32.dll, 81
Menu, Tray, NoStandard
Menu, Tray, Add, Skript Liste Anzeigen, AHKSkripts
Menu, Tray, Add, Beenden, AppExit
Menu, Tray, Default, Skript Liste Anzeigen

AHKSkripts:
 Gui, Add, ListView, r15 w300 vListView gAHKListe hwndhLV AltSubmit, PID|Name|Parameter
 Gui, +ToolWindow +AlwaysOnTop +Resize
 Gui, Show,, Script Control 1.1
 SetTimer, Update, 500
 Gui +LastFound
 WinGetPos,,,gW,gH
 ControlGetPos,,,cW,cH,,ahk_id %hLV%
 DIFFW := (gW - cW) / 2
 DIFFH := (gH - cH) / 2
return

Update:
 oListe := Liste
 Liste := PIDs := PARAMS := ShortNames := ""

 WinGet, hwnd, List, ahk_class AutoHotkey

 Loop, %hwnd%
 {
   ID := hwnd%A_Index%
   WinGetTitle, Titel, ahk_id %ID%

   SkriptPath := RegExReplace(Titel, " - AutoHotkey v" A_AhkVersion )
   SplitPath,SkriptPath,KurzName

   WinGet, PID, PID, %SkriptPath% ahk_class AutoHotkey

   Liste      .= SkriptPath "`n"
   PIDs       .= PID "`n"
   QP         := QueryParameter(PID)
   QP         := RegExReplace(QP,"\Q""" A_AhkPath  """\E\s+")
   QP         := RegExReplace(QP,"\Q""" SkriptPath """\E\s+")
   PARAMS     .= QP "`n"
   ShortNames .= KurzName "`n"
 }

 if (oListe!=Liste) {
   LV_Delete()

   StringSplit,PID,PIDs,`n
   StringSplit,PARAM,PARAMS,`n
   StringSplit,FullPath,Liste,`n
   ShortNames := SubStr(ShortNames,1,-1)
   Loop, Parse, ShortNames,`n
     LV_Add("",PID%A_Index%,A_LoopField, PARAM%A_Index% )

   LV_ModifyCol()
 }
return

AHKCLOSE:
  GoSub, GetSkript
  WinClose, %Skript% ahk_class AutoHotkey
return

AHKRESTART:
  GoSub, GetSkript
  Interpreter := A_AhkPath
  Kommando := """" Interpreter """ /restart """ Skript """ " Param
  Run, %Kommando%
return

AHKPROPS:
  GoSub, GetSkript
  Interpreter := A_AhkPath
  Kommando := """" Skript """"
  Run, properties %Kommando%
return

AHKEDIT:
  GoSub, GetSkript
  Interpreter := A_AhkPath
  Kommando := """" Skript """"
  Run, edit %Kommando%
return

GetSkript:
  Zeile  := LV_GetNext(0, "F")
  Skript := FullPath%Zeile%
  Param  := PARAM%Zeile%
return

AHKListe:
  If (A_GuiEvent="Normal") {
    Zeile := LV_GetNext(0, "F")
    ToolTip, % FullPath%Zeile%
    SetTimer, TT, 1500
  }
return

TT:
 SetTimer, TT, OFF
 ToolTip
return

GuiContextMenu:
  If (A_GuiControl="ListView") {
    Menu, cMenu, Show, %A_GuiX%, %A_GuiY%
  }
return

GuiSize:
; MiniAnchor
 NB := A_GuiWidth-DIFFW*2
 NH := A_GuiHeight-DIFFH*2
 ControlMove,,DIFFH,DIFFB, %NB%, %NH%, ahk_id %hLV%
return

GuiClose:
GuiEscape:
 Liste := ""
 Gui, Destroy
 SetTimer, Update, OFF
return

AppExit:
  ExitApp

; Teil aus der Funktion GetRemoteCommandLine
; von Process + Command Parameter View
; http://www.autohotkey.com/forum/post-54838.html
; Thx Shimanov!

QueryParameter( p_pid_target )
{
   hp_target := DllCall( "OpenProcess", "uint", 0x10                              ; PROCESS_VM_READ
                     , "int", false, "uint", p_pid_target )
   if (ErrorLevel or !hp_target)
       return

   hm_kernel32 := DllCall( "GetModuleHandle", "str", "kernel32.dll" )
   pGetCommandLineA := DllCall( "GetProcAddress", "uint"
                                , hm_kernel32, "str", "GetCommandLineA" )

   buffer_size = 6
   VarSetCapacity( buffer, buffer_size )

   success := DllCall( "ReadProcessMemory", "uint", hp_target, "uint"
                      , pGetCommandLineA, "uint", &buffer, "uint", buffer_size, "uint", 0 )
   if (ErrorLevel or !success)
      return

   loop, 4
      ppCommandLine += ( ( *( &buffer+A_Index ) ) << ( 8*( A_Index-1 ) ) )
   
   buffer_size = 4
   VarSetCapacity( buffer, buffer_size, 0 )

   success := DllCall( "ReadProcessMemory", "uint", hp_target, "uint"
                     , ppCommandLine, "uint", &buffer, "uint", buffer_size, "uint", 0 )
   if (ErrorLevel or !success)
      return

   loop, 4
      pCommandLine += ( ( *( &buffer+A_Index-1 ) ) << ( 8*( A_Index-1 ) ) )

   buffer_size = 32768
   VarSetCapacity( result, buffer_size, 1 )
   
   success := DllCall( "ReadProcessMemory", "uint", hp_target, "uint", pCommandLine
                     , "uint", &result, "uint", buffer_size, "uint", 0 )
   if (!success)
   {
      loop, %buffer_size%
      {
         success := DllCall( "ReadProcessMemory", "uint", hp_target, "uint"
                            , pCommandLine+A_Index-1, "uint", &result, "uint", 1, "uint", 0 )
         if ( !success or Asc( result ) = 0 )
         {
            buffer_size := A_Index
            break
         }
      }
      success := DllCall( "ReadProcessMemory", "uint", hp_target, "uint", pCommandLine
                          , "uint", &result, "uint", buffer_size, "uint", 0 )
      if (ErrorLevel or !success)
         return
   }

   DllCall( "CloseHandle", "uint", hp_target )
   return, result
}


Der vollständigkeit halber hier die alte Version:

    Dieses kleine Programm zeigt alle Laufenden Autohotkey Skripte mit Ihrem jeweiligen Namen, so dass man auf einen Blick die jeweils abschießen und/oder editieren und/oder neustarten kann



    Code:
    ; getAllAHKscripts.ahk / zLib Style Release (c) 2008 derRaphael(at)oleco.net
    ; Published: $2008-01-25_22-47$

    ; Dieses Skript zeigt alle laufenden _nichtkompilierten_ Skripte an
    ; und bietet die Möglichkeit diese neuzustarten, zu editieren oder zu beenden

    DetectHiddenWindows, ON
    SetTitleMatchMode, 2

    Menu, cMenu, Add, Editieren, AHKEDIT
    Menu, cMenu, Add
    Menu, cMenu, Add, Neu Starten, AHKRESTART
    Menu, cMenu, Add, Beenden, AHKCLOSE
    Menu, cMenu, Add
    Menu, cMenu, Add, Eigenschaften, AHKPROPS

    Menu, Tray, NoStandard
    Menu, Tray, Add, Liste Anzeigen, AHKSkripts
    Menu, Tray, Add, Beenden, AppExit
    Menu, Tray, Default, Liste Anzeigen

    AHKSkripts:
     Gui, Add, ListView, r15 w200 vListView gAHKListe AltSubmit, Name|PID
     Gui, +ToolWindow +AlwaysOnTop
     Gui, Show,, Script Control
     SetTimer, Update, 500
    return

    Update:
     oListe := Liste
     Liste := PIDs := ShortNames := ""

     WinGet, hwnd, List, ahk_class AutoHotkey

     Loop, %hwnd%
     {
       ID := hwnd%A_Index%
       WinGetTitle, Titel, ahk_id %ID%

       SkriptPath := RegExReplace(Titel, " - AutoHotkey v" A_AhkVersion )
       SplitPath,SkriptPath,KurzName

       WinGet, PID, PID, %SkriptPath% ahk_class AutoHotkey

       Liste      .= SkriptPath "`n"
       PIDs       .= PID "`n"
       ShortNames .= KurzName "`n"
     }

     if (oListe!=Liste) {
       LV_Delete()

       StringSplit,PID,PIDs,`n
       StringSplit,FullPath,Liste,`n
       Loop, Parse, ShortNames, `n
         LV_Add("",A_LoopField, PID%A_Index%)

       LV_ModifyCol()
     }
    return

    AHKCLOSE:
      GoSub, GetSkript
      WinClose, %Skript% ahk_class AutoHotkey
    return

    AHKRESTART:
      GoSub, GetSkript
      Interpreter := A_AhkPath
      Kommando := """" Interpreter """ /restart """ Skript """"
      Run, %Kommando%
    return

    AHKPROPS:
      GoSub, GetSkript
      Interpreter := A_AhkPath
      Kommando := """" Skript """"
      Run, properties %Kommando%
    return

    AHKEDIT:
      GoSub, GetSkript
      Interpreter := A_AhkPath
      Kommando := """" Skript """"
      Run, edit %Kommando%
    return

    GetSkript:
      Zeile  := LV_GetNext(0, "F")
      Skript := FullPath%Zeile%
    return

    AHKListe:
      If (A_GuiEvent="Normal") {
        Zeile := LV_GetNext(0, "F")
        ToolTip, % FullPath%Zeile%
        SetTimer, TT, 1500
      }
    return

    TT:
     SetTimer, TT, OFF
     ToolTip
    return

    GuiContextMenu:
      If (A_GuiControl="ListView") {
        Menu, cMenu, Show, %A_GuiX%, %A_GuiY%
      }
    return

    GuiClose:
    GuiEscape:
     Liste := ""
     Gui, Destroy
     SetTimer, Update, OFF
    return

    AppExit:
      ExitApp



ein weiteres für alle, die es nützlich finden skript Smile

grüße
derRaphael
_________________


Zuletzt bearbeitet von DerRaphael am Fr Feb 29, 2008 9:05 pm, insgesamt einmal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Tuncay



Anmeldedatum: 28.10.2006
Beiträge: 127
Wohnort: Berlin

BeitragVerfasst am: Fr Jan 25, 2008 10:26 pm    Titel: Antworten mit Zitat

Noch nicht ausprobiert. Ich finde es dennoch sehr extrem nützlich! Danke, sowas habe ich gebraucht. Kann es zur Zeit aber noch nicht testen.
_________________
Manchmal ist es /falsch/ das "richtige" zu tun.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden MSN Messenger
denick



Anmeldedatum: 15.09.2006
Beiträge: 1238
Wohnort: Berlin

BeitragVerfasst am: Fr Jan 25, 2008 11:00 pm    Titel: Antworten mit Zitat

Moin,

z.Zt. weiß ich noch, was auf meinem Rechner von mir gewollt läuft. Sollte ich mich aber mal nicht mehr erinnern können, werde ich mich hoffentlich an dieses Skript erinnern. Wink
_________________
Hilfe zur Hilfe

(de)nick
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Thalon



Anmeldedatum: 25.10.2005
Beiträge: 1896
Wohnort: Österreich

BeitragVerfasst am: Sa Jan 26, 2008 5:39 am    Titel: Antworten mit Zitat

@DerRaphael
Das liest allerdings nur Skripte mit Fenster, soweit ich das beim Überfliegen des Codes gesehen habe?

Ich muss mir bei Gelegenheit ansehn wie man an die Commandline-Parameter eines Programmes rankommt (wie z.B. Processexplorer). Wäre sowohl für dieses Skript als auch für meinen Taskmanager durchaus nützlich Smile

Thalon

Edit: Finde es übrigens sehr schick was du alles für Skripte erstellst und wie du sie im Forum organisierst!
_________________
Mein Motto: Hilfe zur Selbsthilfe!
Teildeutsche Hilfe (CHM)!! und Deutsche Online-Hilfe
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
denick



Anmeldedatum: 15.09.2006
Beiträge: 1238
Wohnort: Berlin

BeitragVerfasst am: Sa Jan 26, 2008 11:06 am    Titel: Antworten mit Zitat

Moin Thalon,

Zitat:
Ich muss mir bei Gelegenheit ansehn wie man an die Commandline-Parameter eines Programmes rankommt (wie z.B. Processexplorer). Wäre sowohl für dieses Skript als auch für meinen Taskmanager durchaus nützlich

Da gibt es etwas: http://www.autohotkey.com/forum/post-54838.html

Zitat:
Das liest allerdings nur Skripte mit Fenster, soweit ich das beim Überfliegen des Codes gesehen habe?

Darüber bin ich vor Kurzem auch mal gestolpert. ahk_class AutoHotkey sucht nach dem verborgenen AHK Main Window.
_________________
Hilfe zur Hilfe

(de)nick
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
M3CSL



Anmeldedatum: 21.01.2008
Beiträge: 28

BeitragVerfasst am: Sa Jan 26, 2008 1:32 pm    Titel: Antworten mit Zitat

Thalon hat Folgendes geschrieben:
Das liest allerdings nur Skripte mit Fenster, soweit ich das beim Überfliegen des Codes gesehen habe?


Nein, auch die ohne.

Allerdings hat es einen Bug: Unter dem letzten Eintrag, gibt es noch einen der allerdings nur durch Anklicken erkennbar wird und bei einem Teil der Aktionen im Kontextmenü AHK zum Absturz bringt und dann SYSDM.CPL oder einen Laufzeitfehler anzeigt.

CU
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
DerRaphael



Anmeldedatum: 09.01.2008
Beiträge: 1261
Wohnort: 127.0.0.1

BeitragVerfasst am: Sa Jan 26, 2008 1:45 pm    Titel: Antworten mit Zitat

für windows xp gibts folgende lösung sich command line parameter anzeigen zu lassen:

WMI command line tool (WMIC)

WMIC /OUTPUT:C:\ProcessList.txt PROCESS get Caption,Commandline,Processid

oder

WMIC /OUTPUT:C:\ProcessList.txt path win32_process get Caption,Processid,Commandline

so aufgerufen speichern die befehle die aktuellen prozesse unter C:\ProcessList.txt

gefunden unter
http://windowsxp.mvps.org/listproc.htm

aber ich such nochmal weiter Smile

grüße
derRaphael
_________________
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
DerRaphael



Anmeldedatum: 09.01.2008
Beiträge: 1261
Wohnort: 127.0.0.1

BeitragVerfasst am: Sa Jan 26, 2008 1:49 pm    Titel: Antworten mit Zitat

Thalon hat Folgendes geschrieben:
@DerRaphael
Edit: Finde es übrigens sehr schick was du alles für Skripte erstellst und wie du sie im Forum organisierst!


wenn du damit den smalltalk thread meinst, da gibt es wohl gespaltene meinungen hier im forum - aber danke für die blumen

das mit dem 'unsichtbaren' eintrag kann ich bestätigen und werde heute abend einen fix posten

grüße
derRaphael
_________________
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
M3CSL



Anmeldedatum: 21.01.2008
Beiträge: 28

BeitragVerfasst am: Sa Jan 26, 2008 2:07 pm    Titel: Antworten mit Zitat

DerRaphael hat Folgendes geschrieben:
Thalon hat Folgendes geschrieben:
@DerRaphael
Edit: Finde es übrigens sehr schick was du alles für Skripte erstellst und wie du sie im Forum organisierst!


wenn du damit den smalltalk thread meinst, da gibt es wohl gespaltene meinungen hier im forum - aber danke für die blumen


Wo denn? Ich kann mich Thalons Lob da nur anschließen!

DerRaphael hat Folgendes geschrieben:
das mit dem 'unsichtbaren' eintrag kann ich bestätigen und werde heute abend einen fix posten


Ok, eilt nicht!


Was anderes, scheint bisher übersehen worden zu sein: Ich könnte hier mal die Hilfe von nen paar Profis gebrauchen, ich denke davon sind hier genug in diesem Thread: http://de.autohotkey.com/forum/viewtopic.php?t=2434

CU
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
DerRaphael



Anmeldedatum: 09.01.2008
Beiträge: 1261
Wohnort: 127.0.0.1

BeitragVerfasst am: Sa Jan 26, 2008 2:15 pm    Titel: Antworten mit Zitat

anhang zu recherche:

Sysinternals Topic: get command-line of running processes

da gibts ein code snippet, wie man command line parameters in erfahrung bringt, bin aber noch nicht durch den quelltext gestiegen ...

(einfach scheint es wohl nicht mehr zu sein)

grüße
derRaphael
_________________
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Thalon



Anmeldedatum: 25.10.2005
Beiträge: 1896
Wohnort: Österreich

BeitragVerfasst am: Sa Jan 26, 2008 7:03 pm    Titel: Antworten mit Zitat

Ich halt mir die Links mal offen, werde ich vll morgen ansehn (oder in den nächsten Tagen, oder irgendwann *g*).
Erst muss ich ein Spielzeug lösen das ich heute gekauft hab (Knobel-Zeug des höchsten Schwierigkeitsgrades dens dort gab).

Thalon
_________________
Mein Motto: Hilfe zur Selbsthilfe!
Teildeutsche Hilfe (CHM)!! und Deutsche Online-Hilfe
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
BoBo¨
Gast





BeitragVerfasst am: Sa Jan 26, 2008 8:53 pm    Titel: Antworten mit Zitat

Zitat:
Knobel-Zeug des höchsten Schwierigkeitsgrades dens dort gab
Die Summe der Augen auf den sich gegenüberliegenden Seiten ist immer 7. Ist doch ganz einfach. WinkLaughing
Nach oben
DerRaphael



Anmeldedatum: 09.01.2008
Beiträge: 1261
Wohnort: 127.0.0.1

BeitragVerfasst am: Fr Feb 29, 2008 9:07 pm    Titel: Antworten mit Zitat

ein update, das jetzt alle parameter anzeigt, mit denen ein skript so getartet wurde (inklusive restart Smile )

danke an shimanov, dass ich teile seines quelltextes einfach moppsen konnte und danke an denick an dieser stell für den link.

viel spaß!

grüße
derRaphael
_________________
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
M3CSL



Anmeldedatum: 21.01.2008
Beiträge: 28

BeitragVerfasst am: Fr Feb 29, 2008 9:37 pm    Titel: Antworten mit Zitat

Sieht schick aus, aber hat nen Bug: Beim Klick auf Eigenschaften crasht AHK.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
DerRaphael



Anmeldedatum: 09.01.2008
Beiträge: 1261
Wohnort: 127.0.0.1

BeitragVerfasst am: Fr Feb 29, 2008 9:54 pm    Titel: Antworten mit Zitat

mit was für einer version von windows bist du denn unterwegs? ich habe es hier mit win2k sp4 getestet und es funktioniert.

eigenschaften ... kein problem

es ruft ja auch nur run properties "skriptpfad" auf
wenn du sowas aus einem anderen skript machst, hast du da auch probleme?

kann dieses verhalten denn auch auf anderen computern beobachtet werden?

fragen über fragen ...
_________________
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    AutoHotkey Community Foren-Übersicht -> Skripte & Funktionen Alle Zeiten sind GMT
Gehe zu Seite 1, 2  Weiter
Seite 1 von 2

 
Gehe zu:  
Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.


Powered by phpBB © 2001, 2005 phpBB Group
Deutsche Übersetzung von phpBB.de