Jump to content

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

winkill winclose gehen nicht immer


  • Please log in to reply
17 replies to this topic
akka1
  • Members
  • 95 posts
  • Last active: Aug 22 2019 11:46 AM
  • Joined: 09 Aug 2013

hi jungs

habe ein prob mit winkill winclose

leider gehen die befehle nicht bei allen fenstern , sobald eine bestätigung zum schliessen erforderlich ist gehts leider nicht

 

gibt es da eine möglichkeit wie ich auch die fenster zu bekomme ?

ab besten so einfach wie möglich :D

Gui, Add, Button, x16 y37 w170 h20 gbeenden, beenden
Gui, Show, x399 y108 h446 w207, New GUI Window
Return

beenden:
winkill, Rechner
winclose, Rechner
return

GuiClose:
ExitApp



gero
  • Members
  • 127 posts
  • Last active: Jan 18 2016 10:18 PM
  • Joined: 08 May 2009

... schon mal damit versucht:

 

Process, close, PID-oder-Name

 

gruss

gero



akka1
  • Members
  • 95 posts
  • Last active: Aug 22 2019 11:46 AM
  • Joined: 09 Aug 2013

ich hab davon gelesen und versucht nur leider nicht geschaft es gezielt einzusetzen

also wenn ich zb 2 x word.exe auf habe werden direkt beide geschlossen

 

währe super wenn du mir an hand von einem beispiel erklähren könntest wie das genau geht

 

wenn ich zb 2 fenster habe mit folgenden namen und nur 1 davon beenden will

word - dokument1

word - dokument2

 

unter prozesse steht nur

word.exe

word.exe



gero
  • Members
  • 127 posts
  • Last active: Jan 18 2016 10:18 PM
  • Joined: 08 May 2009

... aber du kannst dir doch den Fenster-Titel über die AU3_Spy.exe (liegt im Programmverzeichnis von Autohotkey) auslesen lassen und dann mit mit WinClose oder eben Process arbeiten ...

Hilfreich dabei ist auch im Setup des Scripts der Befehl SetTitleMatchMode, ... s. Hilfe

 

gruss

gero



akka1
  • Members
  • 95 posts
  • Last active: Aug 22 2019 11:46 AM
  • Joined: 09 Aug 2013

hi

ich habs jetzt mal so gemacht

WinKill,ahk_id 0xf06e4

aber kommt auf das gleiche raus das fenster geht nicht zu , ich muss immernoch bestätigen danach



gero
  • Members
  • 127 posts
  • Last active: Jan 18 2016 10:18 PM
  • Joined: 08 May 2009

... stimmt, Word will unbedingt speichern ... bissl störrisch.

Ich gehe mal davon aus, dass du speichern willst vorm schließen ... dann geht's vielleicht so:

WinActivate,000.doc
send !{d}
sleep 100
send {s}
winclose,000.doc

gruss

gero



akka1
  • Members
  • 95 posts
  • Last active: Aug 22 2019 11:46 AM
  • Joined: 09 Aug 2013

ja das geht schon ich hätte hald gerne einen befehl der jedes prog wirklich schliesst , in ahk scheint es das gar nicht zu geben

naja man kann nicht alles haben :D

früher in dos gabs immer tskill oder so



CodeNewbee
  • Members
  • 104 posts
  • Last active: Dec 02 2015 10:12 PM
  • Joined: 25 Jul 2013

Du könntest es zum Beispiel mit taskkill.exe durchführen. Allerdings musst Du Dir im Klaren darüber sein, das der Process gnadenlos abgeschossen wird.
Notepad.exe mußt Du natürlich mit Deinem Prozess ersetzen.
 

#NoTrayIcon ; Das AHK Symbol wird nicht angezeigt
#NoEnv  ; Recommended for performance and compatibility with future AutoHotkey releases.
Run, C:\Windows\System32\taskkill.exe /F /IM notepad.exe /T, ,Hide ; fuehre taskkill versteckt (, "Arbeitsverzeichniss" , Hide) aus 

/*

Syntax für taskkill.exe:
/pid   ProcessID   : Specifies the process ID of the process to be terminated.
/im   ImageName   : Specifies the image name of the process to be terminated. Use the wildcard (*) to specify all image names.
/f   : Specifies that process(es) be forcefully terminated. This parameter is ignored for remote processes; all remote processes are forcefully terminated.
/t   : Specifies to terminate all child processes along with the parent process, commonly known as a tree kill.
/? : Displays help at the command prompt. 

*/

Vielleicht hilft es...



akka1
  • Members
  • 95 posts
  • Last active: Aug 22 2019 11:46 AM
  • Joined: 09 Aug 2013

danke , aber das hab ich schon versucht leider vergeblich :(

das prob an

"Run, C:\Windows\System32\taskkill.exe /F /IM notepad.exe /T, ,Hide ; fuehre taskkill versteckt (, "Arbeitsverzeichniss" , Hide) aus "

ist leider das man damit nur alle offene fenster beenden kann

 

ich würde gerne zb bei 2 offenen files nur eines beenden

notepad.exe - urlaub

notepad.exe - text

 

wirklich gezielt auf ein fenster des selben programms gehts scheinbar nicht oder ?



CodeNewbee
  • Members
  • 104 posts
  • Last active: Dec 02 2015 10:12 PM
  • Joined: 25 Jul 2013

Soweit ich weiß, geht das mit taskkill.exe nicht. Denn Taskkill beendet ja den kompletten Prozess.

Hierzu müsstest Du den Fenstertitel direkt ansprechen.
Also mit WinActivate und WinClose sollte es funktionieren, so wie gero es bereits geschrieben hat.

Die Dateien sollten ja dann urlaub.txt oder text.text heissen, denke ich mal.

Eventuell aber auch mit WinKill:

IfWinExist, urlaub - Notepad
WinKill ; use the window found above


nnnik
  • Members
  • 1625 posts
  • Last active: Jan 24 2019 02:19 PM
  • Joined: 28 Jul 2012

Es wird sich nichts ändern.

Windows sendet eine sogenannte Message an den Prozess / das Fenster.

Das führt bei den meisten Fenstern zu dem schließen des Fensters.

Jedoch muss ein Prozess nicht mit dem Schließen des Fensters reagieren er kann auch einfach gar nichts tun.


Visit the new forum ahkscript.org.

http://ahkscript.org


CodeNewbee
  • Members
  • 104 posts
  • Last active: Dec 02 2015 10:12 PM
  • Joined: 25 Jul 2013

@nnnik

 

meine unten aufgeführte Lösung sollte das Problem lösen, habe ich selbst getestet...

 

@akka1

Hier nun die getestete Lösung:

#NoEnv  ; Recommended for performance and compatibility with future AutoHotkey releases.
SendMode Input  ; Recommended for new scripts due to its superior speed and reliability.
SetWorkingDir %A_ScriptDir%  ; Ensures a consistent starting directory.

IfWinExist, Urlaub.txt - Editor ; Editor = Notepad, Gross- und Kleinschreibung ist zu beachten!!!
{
WinActivate, Urlaub.txt - Editor ; aktiviere das Fenster von Notepad und hole es in den Vordergrund
WinWaitActive, Urlaub.txt - Editor ; warte bis das Fenster aktiv ist
WinKill, Urlaub.txt - Editor  ; Beende das zuvor gefundenen Fenster
}

IfWinExist, Test.txt - Editor ; Editor = Notepad, Gross- und Kleinschreibung ist zu beachten!!!
{
WinActivate, Test.txt - Editor ; aktiviere das Fenster von Notepad und hole es in den Vordergrund
WinWaitActive, Test.txt - Editor ; warte bis das Fenster aktiv ist
WinKill, Test.txt - Editor ; Beende das zuvor gefundenen Fenster
}


nnnik
  • Members
  • 1625 posts
  • Last active: Jan 24 2019 02:19 PM
  • Joined: 28 Jul 2012

Kein unterschied schließt sich immer noch nicht -.-.

BTW du musst was in dem Editor schreiben damit die Meldung überhaupt kommt.


Visit the new forum ahkscript.org.

http://ahkscript.org


CodeNewbee
  • Members
  • 104 posts
  • Last active: Dec 02 2015 10:12 PM
  • Joined: 25 Jul 2013

Also bei mir funktioniert es einwandfrei.

Zwei leere Textdateien angelegt und gespeichert:
1. Test.txt

2. Urlaub.txt

Beide in Notepad geöffnet, Skript gestartet, beide Fenster werden nach vorn geholt und geschlossen.
 

Windows 7 Professional 64 bit | AHK 1.13.00 64 bit



nnnik
  • Members
  • 1625 posts
  • Last active: Jan 24 2019 02:19 PM
  • Joined: 28 Jul 2012

Du musst die Dateien ja auch während Notepad geöffnet hast ändern.

Sonst würde die Messagebox "Wollen sie die Änderungen speichern ?" nicht kommen.


Visit the new forum ahkscript.org.

http://ahkscript.org