cerrar programa mediante ams

Aquí puedes preguntar o compartir tus dudas y conocimientos acerca del programa
hola atodos mi duda es la siguiente quiero en mi proyecto poder cerrar un programa o proceso q se este ejecutando por jemplo algun (proceso .exe) disculpen si ya esta en el foro mi pregunta saludos----------
Sabiendo como se llama el proceso... esta chupao usa System.TerminateProcess y para saber los que hay en curso System.EnumerateProcesses
solo quiero terminar el proceso me lo podrias explicar mejor con un ejemplo ya q no soy tan avanzad como uds por fi
Depende como se llame el proceso... prueva en administrador de tareas de windows cuando este el proceso abierto y sabiendo el nombre  , puede ser application.exe o lo que sea... terminalo con la acción System.TerminateProcess , solo es eso.
A mí me ha servido....
file_to_check_for = "wmplayer.exe"; --have all lowercase (todo en minusculas)
processes = System.EnumerateProcesses();

for j, file_path in pairs(processes) do
    file = String.SplitPath(file_path);
    if (String.Lower(file.Filename..file.Extension)) == file_to_check_for then
        dResult = Dialog.Message("Terminate", "Want close Windows Media Player?", MB_YESNO, MB_ICONQUESTION, MB_DEFBUTTON1)
        if dResult == IDYES then
        	System.TerminateProcess(j);
        end
    end
end
HIDE: ON
Hidebb Message Hidden Description
:cerrado:
;) good ceone
Where are you ?
;)
thanks

Gracias por el codigo Ceone, me descargue el "Libro AMS 8.0 por Douglas A." :friends: y he llegado a rebisar de nuevo la parte de "tablas", y se me dio una duda, se podria poner una lista de procesos a lo cuales uno quiere cerrar con una tabla?

asi:

tablaAlucard = {"uno.exe", "dos.exe", "tres.exe", "cuatro.exe", "cinco.exe"}


O talves los puestos en un lixbox?

Gracias :friends:

claro y checkeas la tabla si uno de ellos se esta ejecutando y de ser asi , lo cierras.

sarumanice escribió:O talves los puestos en un lixbox?
Sencillo...

Boton On Click u On Preload o que se yo...

ListBox.DeleteItem("ListBox1", LB_ALLITEMS);
processes = System.EnumerateProcesses();
nCounter = 0;
for j, file_path in pairs(processes) do
	nCounter = nCounter + 1;
    sSplitProcs = String.SplitPath(file_path);
    sProcName = sSplitProcs.Filename;
    sProcExt = sSplitProcs.Extension;
  	
	sProcNameLow = String.Lower(sSplitProcs.Filename);
    sProcExtLow = String.Lower(sSplitProcs.Extension);
  	
  	sContainer = ListBox.AddItem("ListBox1", j.." "..sProcName..sProcExt, sProcNameLow..sProcExtLow);
  	Label.SetText("Label_Found", "Found: "..string.format("%02d", nCounter));
	Application.Sleep(25);
end

ListBox On Select o On Double-Click

nQuestion = Dialog.Message("Warning!", "You are about to end a process ...\r\n\r\nContinue?", MB_OKCANCEL, MB_ICONEXCLAMATION, MB_DEFBUTTON2);
if (nQuestion == IDCANCEL) then
	Application.ExitScript();
else
	sSelect = ListBox.GetSelected("ListBox1");
	if (sSelect == nil) then
		Application.ExitScript();
	else
		nFileToVeryf = ListBox.GetItemData("ListBox1", sSelect[1]);
		instances_of_file = 0;
		file_to_check_for = nFileToVeryf;
		processes = System.EnumerateProcesses();

		for j, file_path in pairs(processes) do
    		file = String.SplitPath(file_path);
	    	if (String.Lower(file.Filename..file.Extension)) == file_to_check_for then
    	    	System.TerminateProcess(j);
    		end
		end
	end
	Page.ClickObject("xButton1");
end

Muchas gracias por el codigo MetaFunken, lo modifique un poco para lograr que funcionara un poco más automatico...:
cuenta = "1";
while true do
	nFileToVeryf = ListBox.GetItemData("ListBox1", cuenta);
	if nFileToVeryf ~= "" then
		file_to_check_for = nFileToVeryf;
		processes = System.EnumerateProcesses();
		for j, file_path in pairs(processes) do
			file = String.SplitPath(file_path);
			if (String.Lower(file.Filename..file.Extension)) == file_to_check_for then
				System.TerminateProcess(j);
			end
		end
		cuenta = cuenta + "1";
		else
		Dialog.Message("Notice", "Busqueda terminada!", MB_OK, MB_ICONINFORMATION, MB_DEFBUTTON1);
		break;
	end
end


En el Lixbox1 puse en la parte de data estos ejecutables;

filezilla.exe
wmplayer.exe
ccleaner.exe

Lo extraño fue que cuando abro el CCleaner, y entro al administrador de tareas, y me voy a la pestaña de procesos veo efectivamente el proceso del ccleaner, pero con mayusculas las dos "CC" osea asi; "CCleaner.exe" pero tube que poner en el lixbox en miniscula "ccleaner.exe", lo cual me extraño un poco, pero revizando el codigo bi que pusiste
if (String.Lower(file.Filename..file.Extension))
Pero me pregunto xq???

No es posible cerrar un proceso si el nombre esta en mayuscula?

Gracias de nuevo por el codigo!, :ohyeah:

mm yo creo que esto es porque en el listbox sabes que esta en minúscula y en el proceso no , así te aseguras que la comparación no tenga en cuenta esto.

sarumanice escribió:Pero me pregunto xq???

No es posible cerrar un proceso si el nombre esta en mayuscula?
Analiza bien el ejemplo que te puse, este ejemplo es demasiado basico (propio de ams) y funciona perfectamente, al menos como yo te lo puse...

Comprendamos lo siguiente:

Primero que nada "YO programador" puedo nombrar a mi proceso como quiera; incluye MAYUSCULAS o minusculas, vamos bien?

Segundo, el String.Lower , como su nombre lo indica, convierte todo un STRING "X" en minusculas, caso contrario del String.Upper. Lo que hace, en este caso y aplicado de esta manera (String.Lower) es "evitarnos" equivocaciones, de que manera? Simple, nos ayuda a hacer la comparativa en minusculas para evitar ERRORES de dedo entre mayusculas y minusculas. PERO la raiz de la busqueda debe estar en minusculas tambien para que String.Lower (verificando procesos) funcione pues si la raiz esta "NoRmAl" no funcionara. Vamos bien?

Por lo tanto, los procesos se cierran siempre y cuando los nombres coincidan (bueno realmente el codigo no cierra por el nombre sino por el ID del proceso) pero el nombre nos sirve como identificador "a los ojos" y esto es menester para nosotros pues a menos que seas "Automan" podrias identificar los procesos por ID :) .

En resumen, para cerrar un proceso debes escribir el nombre del proceso que buscas tal cual aparece en tu Administrador de Tareas (Task Manager).

Finalmente gracias a ti mi buen...

Saludos

gracias

Gracias!
:pc: :pc: :pc: :pc: :downvote-1417755753:
TASKKILL /IM "HSSCP.exe" /F
eso rojo reemplazalo por el nombre del proceso a cerrar .
cual es el nombre ?? tu sabras! lo que quieres que finalize .por cierto metelo en un bloc de nota con extension.bat (ejemplo)
mesudacodeartanto.bat. si lo aplicas a autoplay ,lo de Rafa lo mas sensillo, pero si eres mas lioso puede que funcione doble clic en boton, añadir acciones,file open, y listo! coge la ruta del bloc de nota que creastes.bat. yo creo que acertaras mas asin ,saludos!