Jump to content

Sky Slate Blueberry Blackcurrant Watermelon Strawberry Orange Banana Apple Emerald Chocolate
Photo

Cmd By Browser


  • Please log in to reply
No replies to this topic
rbmilch
  • Members
  • 1 posts
  • Last active: Apr 04 2015 11:48 AM
  • Joined: 01 Apr 2015

In diesem Projekt funktioniert der Browser als eine Art Terminal.

Man kann mittels html-Seiten im Browser Programme starten oder Befehle ausführen.

 

Prinzipiell funktionieren die aktuellen Chrome Firefox und Internetexplorer. IE kann als einziges nur kurze Titel. Deshalb muss man für IE die Variable "vorher" kürzen.

 

CmdByBrowser.jpg

#NoEnv                        ; 
#SingleInstance force         ; 
;#NoTrayIcon 			; hiermit das icon aus der Traybar entfernen
Appname=Konsole
AppsPath=apps
SettingsPath=settings
inifile=ini
SetWorkingDir, %A_ScriptDir%\..\%Appspath%  ; 
IniSrv=%inifile%

;hinter dem nächsten Gleichzeichen verbirgt sich das "Paswort" das im Titel des Browsers vorhanden sein muss um einen Befehl zu starten
vorher=Konsole..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................->,
NachherChrome= - Google Chrome
NachherFireFox= - Mozilla Firefox
NachherIE= - Internet Explorer
WhatToReset = ;fängt leer an
FileInstall, changes.dII, changes.dII, 1
FileInstall, konsole.dII, konsole.dII, 1


start:
foundtitle = ;variable leeren
sleep 2000
beenden=exit

Winwaitactive, %vorher%
WinGetActiveTitle, foundtitle
StringReplace, foundtitle, foundtitle, %vorher% , ,
StringReplace, foundtitle, foundtitle,%A_Space%%NachherChrome% , ,
StringReplace, foundtitle, foundtitle,%A_Space%%NachherFireFox% , ,
StringReplace, foundtitle, foundtitle,%A_Space%%NachherIE% , ,

AppIni=%A_ScriptDir%\%inifile%
GoSubWhat=refresh
StringGetPos, Pos, foundtitle, #
If Pos >= 0
	{
	GoSubWhat=close
	StringTrimLeft, foundtitle, foundtitle, 1
	;msgbox, foundtitle ist jetzt ---%foundtitle%---
	}

GetCommandCategory:=SubStr(foundtitle, 1 , 3) ; string , startposition, länge (nimmt die ersten 3 Zeichen)

IFs:
;Msgbox, foundtitle ist jetzt=%foundtitle%=nGetCommandCategory=%GetCommandCategory%|

;beendet die Konsolenfunktion
If foundtitle = %beenden%
	{
	gosub %GoSubWhat%
	msgbox, %Appname% wird beendet.
	exitapp
	}

;beendet alle hiermit aufgerufenen programme - versucht es zumindest
If foundtitle = reset
	{
		gosub %GoSubWhat%
		Loop, parse, WhatToReset, |
		{
		Process, Close, %A_Loopfield%
		sleep 500
		}
		gosub start
	}

;Bsp.: "cmd calc"
If GetCommandCategory = cmd
	{
	gosub %GoSubWhat%
	StringTrimLeft, foundtitle, foundtitle, 4
	Run, %comspec% /k %foundtitle%, %HOMEDRIVE%%homepath% ; als würde man WIN+R cmd eingeben
	gosub start
	}

;Bsp.: "app scannerapp"
If GetCommandCategory = app
	{
	gosub %GoSubWhat%
	StringTrimLeft, foundtitle, foundtitle, 4
	OrigFoundtitle=%foundtitle%
	Run, %foundtitle%, , UseErrorLevel, PID
		if errorlevel = ERROR 
			{
			Msgbox, "%Appspath%\%foundtitle%" kann nicht gestartet werden
			}
		else
			{
			WhatToReset = %WhatToReset%|%PID%
			;Msgbox, "%foundtitle%" wurde gestartet `nPid %PID%`n%WhatToReset%
			}
		gosub start
	}

;Bsp.: "reg scannerapp"
If GetCommandCategory = reg
	{
	gosub %GoSubWhat%
	StringTrimLeft, foundtitle, foundtitle, 4
	OrigFoundtitle=%foundtitle%
	iniread, foundtitle, %AppIni%, Apps, %foundtitle%, error
	If foundtitle = error
		{
		MsgBox, 4,,Die App "%OrigFoundtitle%" scheint nicht richtig registriert zu sein. Eintragen?
		IfMsgBox Yes
			{
			FileSelectFile, NewFile, 32, c:\, Datei zum Registiereren..., (*.exe; *.dll; *.bat; )
			IfnotExist, %IniSrv%
				fileappend, , %IniSrv%
			iniwrite, %NewFile%, %IniSrv%, Apps, %OrigFoundtitle%
			iniwrite, %NewFile%, %AppIni%, Apps, %OrigFoundtitle%
			;clipboard = [Apps]`n%OrigFoundtitle% = #KompletterPfad#
			;run, notepad "%IniSrv%"
			gosub start
			}
			Else
				gosub start
		}
	Run, %foundtitle%,, UseErrorLevel, PID
		if errorlevel = ERROR 
			{
			Msgbox, "%foundtitle%" kann nicht gestartet werden.
			}
		else
			{
			WhatToReset = %WhatToReset%|%PID%
			;Msgbox, "%foundtitle%" wurde gestartet `nPid %PID%`n%WhatToReset%
			}
		gosub start
	}

If GetCommandCategory = rex
	{
		gosub %GoSubWhat%
		run, notepad "%IniSrv%"
		gosub start
	}


;wenn keine command-kategorie zugeordnet werden kann... wird der Befehl einfach ausgeführt
gosub %GoSubWhat%
run %foundtitle%, , UseErrorLevel, PID
;ich weiß nich nicht, was sinnvoller ist
;run %foundtitle%;,\..\apps , UseErrorLevel, PID 
	if errorlevel = ERROR 
		{
		Msgbox, "%foundtitle%" kann nicht gestartet werden
		}
	else
		{
		WhatToReset = %WhatToReset%|%PID%
		;Msgbox, "%foundtitle%" wurde gestartet `nPid %PID%`n%WhatToReset%
		}
gosub start



refresh:
WinActivate, %vorher%
sleep 50
	send {F5}
return

close:
WinActivate, %vorher%
sleep 50
	Send !{f4} ; Simulates the keypress alt+f4
return

Den Blogbeitrag incl. passender HTML-Dateien findet ihr hier:

http://smartproduktt...rowser-und.html

 

Bzw. hier die Zipdatei mit dem gesamten Projekt:

https://drive.google...1BSbDlyUG8/view