Du bist nicht angemeldet.

Michi2q

Profi

  • »Michi2q« ist der Autor dieses Themas

Beiträge: 1 142

Beruf: Einzelhandelskaufmann

Guthaben: 1 355 CC-Euro

  • Private Nachricht senden

1

Mittwoch, 27. Mai 2009, 22:38

Programm Starten mit AutoIt - Pfad fehler ?

Hallo Leute,

ich habe diesen Code letzt bekommen...
Case $cs ;wird ausgelöst wenn die Radiobox 1 angeklickt wurde ShellExecute("sys/programm.bat") ;startet das Programm 1 GUICtrlSetState($cs, $GUI_UNCHECKED) ;Schaltet die Radiobox aus

AutoIt-Quellcode

 1 
 2 
 3 
Case $cs ;wird ausgelöst wenn die Radiobox 1 angeklickt wurde
			ShellExecute("sys/programm.bat") ;startet das Programm 1
			GUICtrlSetState($cs, $GUI_UNCHECKED) ;Schaltet die Radiobox aus

Nur ist es jetzt so wenn ich das Programm öffnen will, passiert nicht das, was eigenltich passieren soll.
Das Programm öffnet sich zwar kurz aber ist dann auch gleich wieder weck.
Meine "Programm.bat" soll eine andere .bat datei ansteuern besser gesagt dieser X.bat Datei sagen was sie zu tun hat.
Wenn ich die Datei "Programm.bat" so öffne funktioniert das auch nur wenn ich das über meiin AutoIT Code mache geht dies nicht.

Warum? was mache ich falsch`? Komisch daran ist, das es bei einer TXT datei z.B geht.
Phantasie ist wichtiger als Wissen, denn Wissen ist begrenzt.
Albert Einstein, 14.03.1879 - 18.04.1955
deutscher Physiker und Nobelpreisträger

FirePanther

The Coderz-Master

Beiträge: 4 029

Wohnort: Berlin

Guthaben: 1 903 CC-Euro

  • Private Nachricht senden

2

Mittwoch, 27. Mai 2009, 23:45

hi
1., schon wie einma gesagt... benutze backslashes (sys\programm.bat)
2. benutze run statt shellexecute...
3. änder den workingpath... (siehe die hilfe zu run...)
der workingpath ist dann im verzeichnis "sys\"

also:
[autoit=1]Run("sys\programm.bat",@scriptdir&"\sys\")[/autoit]

das problem bei direktes ausführen und von autoit ausführen lassen ist, dass wenn du es direkt ausführst, der working dir das selbe ist wie das skriptdir
bei autoit ist aber das workingdir wie der vom autoitscript, statt der von bat-dir...

schwer zu erklären...
aber wenn z.B. bei der bat-datei steht:
start test.exe

dann startet er es eigentlich aus dem eigenen pfad, da der eigene pfad der selbe ist wie der workingpfad...
d.h. er startet "sys\test.exe", weil die bat auch im sysverzeichnis ist und du es vom sysverzeichnis ausgeführt hast
wenn aber autoit es startet, dann wird es ausserhalb der sys ausgeführt... d.h. er sucht nach der datei ausserhalb des syspfads...
der workingpath ist also der selbe wie der von autoit...

hoffe du hast einen ansatz verstanden ^^ reicht schon aus :P
weil ist schwer zu erklären für mich...

cya
[box]Typisch Coderz-Team:
Mein Name ist FirePanther, das L steht für Gefahr...
ProCoder: Da ist kein L vorhanden.
LooCuz: wo isn da ein L
FirePanther: ihr idioten, Gefahr wird auch nicht mit L geschrieben xD[/box]

Neustes Projekt: www.autoit.at

SubZer0

Fortgeschrittener

  • »SubZer0« wurde gesperrt

Beiträge: 330

Guthaben: 0 CC-Euro

  • Private Nachricht senden

3

Donnerstag, 28. Mai 2009, 01:23

run is crap, machs über die shell
“Betrachte das als Warnung: Wenn ich dich noch einmal beim Murmeln irgendeiner frechen Zwischenbemerkung erwische, dann greife ich tief in deine Psyche, hol deinen jämmerlichsten Komplex heraus und richte bis ans Ende deiner Tage den weltgrößten Scheinwerfer darauf.”

FirePanther

The Coderz-Master

Beiträge: 4 029

Wohnort: Berlin

Guthaben: 1 903 CC-Euro

  • Private Nachricht senden

4

Donnerstag, 28. Mai 2009, 01:32

run startet skripte... einfach direktes ausführen
shell startet skripte über ihre registry applikation..
und da bei batch die regisytryapplikation %1 ist (%1 = direktes ausühren = run) ist es kein unterschied...
siehe registry...
wenn du die datei umbenennst in weissichwas.dll kannst du es mit run immernoch ausführen und es macht das selbe, was die batch auch macht, weil run führt immer %1 aus...
shell führt immer so aus, wie es im registry steht... z.B. shellexecute bei einer html datei würden dann den pfad des browsers + %1 beinhalten...
[box]Typisch Coderz-Team:
Mein Name ist FirePanther, das L steht für Gefahr...
ProCoder: Da ist kein L vorhanden.
LooCuz: wo isn da ein L
FirePanther: ihr idioten, Gefahr wird auch nicht mit L geschrieben xD[/box]

Neustes Projekt: www.autoit.at

Michi2q

Profi

  • »Michi2q« ist der Autor dieses Themas

Beiträge: 1 142

Beruf: Einzelhandelskaufmann

Guthaben: 1 355 CC-Euro

  • Private Nachricht senden

5

Freitag, 29. Mai 2009, 23:29

Nö geht nit... =(
Aber wie gesagt es ist komisch wenn ich eine .txt datei damit öffne geht es...
Nur die .bat dateien gehen nicht...

Edit:

#include <ButtonConstants.au3> #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> $Form1 = GUICreate("Form1", 148, 115, 192, 124) $p1 = GUICtrlCreateRadio("Programm 1", 16, 16, 113, 33) $p2 = GUICtrlCreateRadio("Programm 2", 16, 64, 113, 17) GUISetState(@SW_SHOW) While 1 $nMsg = GUIGetMsg() Switch $nMsg case $GUI_EVENT_CLOSE Exit Case $p1 ShellExecute("sys\p1.bat") GUICtrlSetState($p1, $GUI_UNCHECKED) Case $p2 ShellExecute("sys\p2.bat") GUICtrlSetState($p1, $GUI_UNCHECKED) EndSwitch WEnd While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit EndSwitch WEnd

AutoIt-Quellcode

 1 
 2 
 3 
 4 
 5 
 6 
 7 
 8 
 9 
 10 
 11 
 12 
 13 
 14 
 15 
 16 
 17 
 18 
 19 
 20 
 21 
 22 
 23 
 24 
 25 
 26 
 27 
 28 
 29 
 30 
 31 
 32 
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
 
$Form1 = GUICreate("Form1", 148, 115, 192, 124)
$p1 = GUICtrlCreateRadio("Programm 1", 16, 16, 113, 33)
$p2 = GUICtrlCreateRadio("Programm 2", 16, 64, 113, 17)
GUISetState(@SW_SHOW)
 
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
case $GUI_EVENT_CLOSE
Exit
 
Case $p1
ShellExecute("sys\p1.bat") 
GUICtrlSetState($p1, $GUI_UNCHECKED) 
Case $p2 
ShellExecute("sys\p2.bat") 
GUICtrlSetState($p1, $GUI_UNCHECKED) 
	EndSwitch
WEnd
 
While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
 
	EndSwitch
WEnd
Phantasie ist wichtiger als Wissen, denn Wissen ist begrenzt.
Albert Einstein, 14.03.1879 - 18.04.1955
deutscher Physiker und Nobelpreisträger

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Michi2q« (29. Mai 2009, 23:29)


FirePanther

The Coderz-Master

Beiträge: 4 029

Wohnort: Berlin

Guthaben: 1 903 CC-Euro

  • Private Nachricht senden

6

Freitag, 29. Mai 2009, 23:40

hm?
hast du mein post mit working dir gelesen?
versuch das ma
[box]Typisch Coderz-Team:
Mein Name ist FirePanther, das L steht für Gefahr...
ProCoder: Da ist kein L vorhanden.
LooCuz: wo isn da ein L
FirePanther: ihr idioten, Gefahr wird auch nicht mit L geschrieben xD[/box]

Neustes Projekt: www.autoit.at

Michi2q

Profi

  • »Michi2q« ist der Autor dieses Themas

Beiträge: 1 142

Beruf: Einzelhandelskaufmann

Guthaben: 1 355 CC-Euro

  • Private Nachricht senden

7

Samstag, 30. Mai 2009, 00:03

Ja eingetlich habe ich ihn gelesen.

Der code war auch nur ne Demo wie meiner ungefäht aussieht..
ich habe den "Run......" eingesetz.
Aber Funktioniert immer noch nicht höchstens ich habe ihn an der falschen stellen drin oder etwas vergessen dazu oder weg zu machen...

#include <ButtonConstants.au3> #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> $Form1 = GUICreate("Form1", 148, 115, 192, 124) $p1 = GUICtrlCreateRadio("Programm 1", 16, 16, 113, 33) $p2 = GUICtrlCreateRadio("Programm 2", 16, 64, 113, 17) GUISetState(@SW_SHOW) While 1 $nMsg = GUIGetMsg() Switch $nMsg case $GUI_EVENT_CLOSE Exit Case $p1 Run("sys\p1.bat",@scriptdir&"\sys\") GUICtrlSetState($p1, $GUI_UNCHECKED) Case $p2 Run("sys\p2.bat",@scriptdir&"\sys\") GUICtrlSetState($p1, $GUI_UNCHECKED) EndSwitch WEnd While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit EndSwitch WEnd

AutoIt-Quellcode

 1 
 2 
 3 
 4 
 5 
 6 
 7 
 8 
 9 
 10 
 11 
 12 
 13 
 14 
 15 
 16 
 17 
 18 
 19 
 20 
 21 
 22 
 23 
 24 
 25 
 26 
 27 
 28 
 29 
 30 
 31 
 32 
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
 
$Form1 = GUICreate("Form1", 148, 115, 192, 124)
$p1 = GUICtrlCreateRadio("Programm 1", 16, 16, 113, 33)
$p2 = GUICtrlCreateRadio("Programm 2", 16, 64, 113, 17)
GUISetState(@SW_SHOW)
 
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
case $GUI_EVENT_CLOSE
Exit
 
Case $p1
Run("sys\p1.bat",@scriptdir&"\sys\")
GUICtrlSetState($p1, $GUI_UNCHECKED) 
Case $p2 
Run("sys\p2.bat",@scriptdir&"\sys\") 
GUICtrlSetState($p1, $GUI_UNCHECKED) 
	EndSwitch
WEnd
 
While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
 
	EndSwitch
WEnd
Phantasie ist wichtiger als Wissen, denn Wissen ist begrenzt.
Albert Einstein, 14.03.1879 - 18.04.1955
deutscher Physiker und Nobelpreisträger

FirePanther

The Coderz-Master

Beiträge: 4 029

Wohnort: Berlin

Guthaben: 1 903 CC-Euro

  • Private Nachricht senden

8

Samstag, 30. Mai 2009, 00:23

also du öffnest direkt die au3 datei (wird also nicht von nem anderen code gestartet)
die au3 datei befindest sich genau ausserhalb von sys (also sys\..\)
die batch befindet sich im sys...
wenn du die batch direkt ausführst funzts... anders nicht...
dann poste ma die batch und ich teste es bei mir ma...
klingt irgendwie unplausibel...
[box]Typisch Coderz-Team:
Mein Name ist FirePanther, das L steht für Gefahr...
ProCoder: Da ist kein L vorhanden.
LooCuz: wo isn da ein L
FirePanther: ihr idioten, Gefahr wird auch nicht mit L geschrieben xD[/box]

Neustes Projekt: www.autoit.at

Michi2q

Profi

  • »Michi2q« ist der Autor dieses Themas

Beiträge: 1 142

Beruf: Einzelhandelskaufmann

Guthaben: 1 355 CC-Euro

  • Private Nachricht senden

9

Samstag, 30. Mai 2009, 14:03

HldsUpdateTool.exe -command xxxxxx -game cstrike -dir c:\cs_server

C-Quellcode

 1 
HldsUpdateTool.exe -command xxxxxx -game cstrike -dir c:\cs_server


Das ist der inhalt der bat datei...
Phantasie ist wichtiger als Wissen, denn Wissen ist begrenzt.
Albert Einstein, 14.03.1879 - 18.04.1955
deutscher Physiker und Nobelpreisträger

10

Samstag, 30. Mai 2009, 16:19

#include <GUIConstantsEx.au3> $Form1 = GUICreate("Michi2q", 148, 115, 192, 124) $p1 = GUICtrlCreateRadio("Programm 1", 16, 16, 113, 17) $p2 = GUICtrlCreateRadio("Programm 2", 16, 64, 113, 17) GUISetState(@SW_SHOW) While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit Case $p1 ;Run(@ScriptDir & "\sys\p1.bat") MsgBox(64, "Radio-Taste", "Programm 1 gewählt !" & @TAB) GUICtrlSetState($p1, $GUI_UNCHECKED) Case $p2 ;Run(@ScriptDir & "\sys\p2.bat") MsgBox(64, "Radio-Taste", "Programm 2 gewählt !" & @TAB) GUICtrlSetState($p2, $GUI_UNCHECKED) EndSwitch WEnd ; Ende

AutoIt-Quellcode

 1 
 2 
 3 
 4 
 5 
 6 
 7 
 8 
 9 
 10 
 11 
 12 
 13 
 14 
 15 
 16 
 17 
 18 
 19 
 20 
 21 
 22 
 23 
 24 
 25 
#include <GUIConstantsEx.au3>
 
$Form1 = GUICreate("Michi2q", 148, 115, 192, 124)
$p1 = GUICtrlCreateRadio("Programm 1", 16, 16, 113, 17)
$p2 = GUICtrlCreateRadio("Programm 2", 16, 64, 113, 17)
 
GUISetState(@SW_SHOW)
 
While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
		Case $p1
			;Run(@ScriptDir & "\sys\p1.bat")
			MsgBox(64, "Radio-Taste", "Programm 1 gewählt !" & @TAB)
			GUICtrlSetState($p1, $GUI_UNCHECKED)
		Case $p2
			;Run(@ScriptDir & "\sys\p2.bat")
			MsgBox(64, "Radio-Taste", "Programm 2 gewählt !" & @TAB)
			GUICtrlSetState($p2, $GUI_UNCHECKED)
	EndSwitch
WEnd
 
; Ende
MfG RR04

Michi2q

Profi

  • »Michi2q« ist der Autor dieses Themas

Beiträge: 1 142

Beruf: Einzelhandelskaufmann

Guthaben: 1 355 CC-Euro

  • Private Nachricht senden

11

Samstag, 30. Mai 2009, 21:08

Nö geht nicht =(
Phantasie ist wichtiger als Wissen, denn Wissen ist begrenzt.
Albert Einstein, 14.03.1879 - 18.04.1955
deutscher Physiker und Nobelpreisträger

Ähnliche Themen