Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > ger.ct > #560818 > unrolled thread

Wie stelle ich fest, ob der Eltern-Prozess ein Konsolen-Prozess ist ?

Started byBonita Montero <Bonita.Montero@gmail.com>
First post2022-07-12 07:58 +0200
Last post2022-07-12 14:06 +0200
Articles 19 — 5 participants

Back to article view | Back to ger.ct


Contents

  Wie stelle ich fest, ob der Eltern-Prozess ein Konsolen-Prozess ist ? Bonita Montero <Bonita.Montero@gmail.com> - 2022-07-12 07:58 +0200
    Re: Wie stelle ich fest, ob der Eltern-Prozess ein Konsolen-Prozess ist ? Wolfgang Kynast <wky@gmx.de> - 2022-07-12 08:17 +0200
      [OT] Re: Wie stelle ich fest, ob der Eltern-Prozess ein Konsolen-Prozess ist ? Marco Moock <mo01@posteo.de> - 2022-07-12 08:23 +0200
        Re: [OT] Re: Wie stelle ich fest, ob der Eltern-Prozess ein Konsolen-Prozess ist ? Bonita Montero <Bonita.Montero@gmail.com> - 2022-07-12 08:41 +0200
          Re: [OT] Re: Wie stelle ich fest, ob der Eltern-Prozess ein Konsolen-Prozess ist ? Marco Moock <mo01@posteo.de> - 2022-07-12 09:13 +0200
            Re: [OT] Re: Wie stelle ich fest, ob der Eltern-Prozess ein Konsolen-Prozess ist ? Bonita Montero <Bonita.Montero@gmail.com> - 2022-07-12 09:20 +0200
      Re: Wie stelle ich fest, ob der Eltern-Prozess ein Konsolen-Prozess ist ? Bonita Montero <Bonita.Montero@gmail.com> - 2022-07-12 08:40 +0200
    Re: Wie stelle ich fest, ob der Eltern-Prozess ein Konsolen-Prozess ist ? spamfalle2@arcor.de (Marc Stibane) - 2022-07-12 08:55 +0200
      Re: Wie stelle ich fest, ob der Eltern-Prozess ein Konsolen-Prozess ist ? Bonita Montero <Bonita.Montero@gmail.com> - 2022-07-12 08:59 +0200
        Re: Wie stelle ich fest, ob der Eltern-Prozess ein Konsolen-Prozess ist ? spamfalle2@arcor.de (Marc Stibane) - 2022-07-12 09:24 +0200
          Re: Wie stelle ich fest, ob der Eltern-Prozess ein Konsolen-Prozess ist ? spamfalle2@arcor.de (Marc Stibane) - 2022-07-12 09:32 +0200
          Re: Wie stelle ich fest, ob der Eltern-Prozess ein Konsolen-Prozess ist ? Bonita Montero <Bonita.Montero@gmail.com> - 2022-07-12 11:32 +0200
    Re: Wie stelle ich fest, ob der Eltern-Prozess ein Konsolen-Prozess ist ? Uwe Sieber <mail@uwe-sieber.de> - 2022-07-12 09:11 +0200
      Re: Wie stelle ich fest, ob der Eltern-Prozess ein Konsolen-Prozess ist ? Bonita Montero <Bonita.Montero@gmail.com> - 2022-07-12 11:33 +0200
        Re: Wie stelle ich fest, ob der Eltern-Prozess ein Konsolen-Prozess ist ? Bonita Montero <Bonita.Montero@gmail.com> - 2022-07-12 11:34 +0200
          Re: Wie stelle ich fest, ob der Eltern-Prozess ein Konsolen-Prozess ist ? Uwe Sieber <mail@uwe-sieber.de> - 2022-07-12 12:23 +0200
            Re: Wie stelle ich fest, ob der Eltern-Prozess ein Konsolen-Prozess ist ? Bonita Montero <Bonita.Montero@gmail.com> - 2022-07-12 13:43 +0200
            Re: Wie stelle ich fest, ob der Eltern-Prozess ein Konsolen-Prozess ist ? Bonita Montero <Bonita.Montero@gmail.com> - 2022-07-12 13:49 +0200
              Re: Wie stelle ich fest, ob der Eltern-Prozess ein Konsolen-Prozess ist ? Bonita Montero <Bonita.Montero@gmail.com> - 2022-07-12 14:06 +0200

#560818 — Wie stelle ich fest, ob der Eltern-Prozess ein Konsolen-Prozess ist ?

FromBonita Montero <Bonita.Montero@gmail.com>
Date2022-07-12 07:58 +0200
SubjectWie stelle ich fest, ob der Eltern-Prozess ein Konsolen-Prozess ist ?
Message-ID<taj2h0$1vha0$1@dont-email.me>
Ich hab ja schon mal davon berichtet, dass ich die Onleihe bzw. Adobe
Digital Editions (ADE) knacken wollte, dass ich Bücher die dort nicht
wie üblich als EPUB, sondern als PDF, angeboten werden auch entschlüs-
selbar sind. Das ist mir in den ersten drei Ansätzen, die ich hier
anderswo beschrieben habe nicht gelungen, mittlerweile aber doch bzw.
ich kann jetzt aus dem laufenden ADE Prozess PDFs mit beliebiger Ver-
schlüsselung auslesen.
Mein Tool ist ein einfaches Konsolen-Programm. Ich wolte jetzt, dass
das Tool am Ende auf einen Tastendruck wartet wenn es nicht aus einer
Konsole gestartet wurde bzw. der Eltern-Prozess kein Konsolen-Prozess
ist. Ich habe jetzt bestimmt eine Stunde dran gesessen, eine Routine
zu schreiben die feststellt, ob der Eltern-Prozess ein Konsolen-Pro-
zess ist. Das sieht dann als Test-Programm so aus:

#include <Windows.h>
#include <TlHelp32.h>
#include <DbgHelp.h>
#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

using XHANDLE = unique_ptr<void, decltype([]( void *h ) { h && h != 
INVALID_HANDLE_VALUE && CloseHandle( h ); })>;
using XMAP_VIEW = unique_ptr<void, decltype([]( void *p ) { p && 
UnmapViewOfFile( p ); })>;

int main()
{
	XHANDLE xhToolHelp( CreateToolhelp32Snapshot( TH32CS_SNAPPROCESS, 0 ) );
	if( xhToolHelp.get() == INVALID_HANDLE_VALUE )
		return EXIT_FAILURE;
	using process_vec = vector<PROCESSENTRY32W>;
	using process_it = typename process_vec::const_iterator;
	PROCESSENTRY32W pe;
	pe.dwSize = sizeof pe;
	if( !Process32FirstW( xhToolHelp.get(), &pe ) )
		return EXIT_FAILURE;
	vector<PROCESSENTRY32W> processes;
	processes.emplace_back( pe );
	pe.dwSize = sizeof pe;
	while( Process32NextW( xhToolHelp.get(), &pe ) )
		processes.emplace_back( pe );
	if( GetLastError() != ERROR_NO_MORE_FILES )
		return EXIT_FAILURE;
	DWORD dwCurProcId = GetCurrentProcessId();
	process_it itCurProc = find_if( processes.cbegin(), processes.cend(), 
[&]( PROCESSENTRY32W const &pe ) -> bool { return pe.th32ProcessID == 
dwCurProcId; } );
	if( itCurProc == processes.cend() )
		return EXIT_FAILURE;
	process_it itParentProc = find_if( processes.cbegin(), 
processes.cend(), [&]( PROCESSENTRY32W const &pe ) -> bool { return 
pe.th32ProcessID == itCurProc->th32ParentProcessID; } );
	if( itParentProc == processes.cend() )
		return EXIT_FAILURE;
	xhToolHelp.reset( CreateToolhelp32Snapshot( TH32CS_SNAPMODULE, 
itParentProc->th32ProcessID ) );
	if( xhToolHelp.get() == INVALID_HANDLE_VALUE )
		return EXIT_FAILURE;
	MODULEENTRY32W me;
	me.dwSize = sizeof me;
	Module32FirstW( xhToolHelp.get(), &me );
	XHANDLE xhExcecutable( CreateFileW( me.szExePath, GENERIC_READ, 
FILE_SHARE_READ, nullptr, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL ) );
	if( xhExcecutable.get() == INVALID_HANDLE_VALUE )
		return EXIT_FAILURE;
	XHANDLE xhMapping( CreateFileMapping( xhExcecutable.get(), nullptr, 
PAGE_READONLY | SEC_IMAGE, 0, 0, nullptr ) );
	if( !xhMapping.get() )
		return EXIT_FAILURE;
	XMAP_VIEW mapView( MapViewOfFile( xhMapping.get(), FILE_MAP_READ, 0, 0, 
0 ) );
	if( !mapView.get() )
		return EXIT_FAILURE;
	if( ImageNtHeader( mapView.get() )->OptionalHeader.Subsystem == 
IMAGE_SUBSYSTEM_WINDOWS_CUI )
		cout << "parent process is a console process";
	else
		cout << "parent process isn't a console process";
	for( ; ; );
}

Ganz schön aufwendig für die Anforderungen, nicht ?

[toc] | [next] | [standalone]


#560821

FromWolfgang Kynast <wky@gmx.de>
Date2022-07-12 08:17 +0200
Message-ID<jj4hvvF78vfU1@mid.individual.net>
In reply to#560818
On Tue, 12 Jul 2022 07:58:43 +0200, "Bonita Montero" posted:

...
>Ganz schön aufwendig für die Anforderungen, nicht ?


Redet man in den passenden Gruppen nicht mehr mit dir, Christian?

[toc] | [prev] | [next] | [standalone]


#560824 — [OT] Re: Wie stelle ich fest, ob der Eltern-Prozess ein Konsolen-Prozess ist ?

FromMarco Moock <mo01@posteo.de>
Date2022-07-12 08:23 +0200
Subject[OT] Re: Wie stelle ich fest, ob der Eltern-Prozess ein Konsolen-Prozess ist ?
Message-ID<20220712082349.7f7d31e0@ryz>
In reply to#560821
Am Dienstag, 12. Juli 2022, um 08:17:34 Uhr schrieb Wolfgang Kynast:

> Redet man in den passenden Gruppen nicht mehr mit dir, Christian?

Nicht mehr sachlich, weil fast überall nur Getrolle kam.

[toc] | [prev] | [next] | [standalone]


#560828 — Re: [OT] Re: Wie stelle ich fest, ob der Eltern-Prozess ein Konsolen-Prozess ist ?

FromBonita Montero <Bonita.Montero@gmail.com>
Date2022-07-12 08:41 +0200
SubjectRe: [OT] Re: Wie stelle ich fest, ob der Eltern-Prozess ein Konsolen-Prozess ist ?
Message-ID<taj516$1vndf$2@dont-email.me>
In reply to#560824
Am 12.07.2022 um 08:23 schrieb Marco Moock:

>> Redet man in den passenden Gruppen nicht mehr mit dir, Christian?

> Nicht mehr sachlich, weil fast überall nur Getrolle kam.

Erstens weißt Du nicht was trollen ist. Zweitens hast Du noch eine
Rechnung mit mir auf, die Du hier begleichen willst. Leute die ein
derartiges Ego-Logbuch haben, die haben auch eine entsprechende
Persönlichkeits-Störung.

[toc] | [prev] | [next] | [standalone]


#560833 — Re: [OT] Re: Wie stelle ich fest, ob der Eltern-Prozess ein Konsolen-Prozess ist ?

FromMarco Moock <mo01@posteo.de>
Date2022-07-12 09:13 +0200
SubjectRe: [OT] Re: Wie stelle ich fest, ob der Eltern-Prozess ein Konsolen-Prozess ist ?
Message-ID<20220712091352.396d1dc7@ryz>
In reply to#560828
Am Dienstag, 12. Juli 2022, um 08:41:29 Uhr schrieb Bonita Montero:

> Leute die ein derartiges Ego-Logbuch haben, die haben auch eine entsprechende
> Persönlichkeits-Störung.

Das nennt sich Gehirn und ist bei mir vorhanden.

[toc] | [prev] | [next] | [standalone]


#560835 — Re: [OT] Re: Wie stelle ich fest, ob der Eltern-Prozess ein Konsolen-Prozess ist ?

FromBonita Montero <Bonita.Montero@gmail.com>
Date2022-07-12 09:20 +0200
SubjectRe: [OT] Re: Wie stelle ich fest, ob der Eltern-Prozess ein Konsolen-Prozess ist ?
Message-ID<taj79f$1vtn6$1@dont-email.me>
In reply to#560833
Am 12.07.2022 um 09:13 schrieb Marco Moock:
> Am Dienstag, 12. Juli 2022, um 08:41:29 Uhr schrieb Bonita Montero:
> 
>> Leute die ein derartiges Ego-Logbuch haben, die haben auch eine entsprechende
>> Persönlichkeits-Störung.
> 
> Das nennt sich Gehirn und ist bei mir vorhanden.

Haste vielleicht auch mal zusammenhängende Assoziationen ?

[toc] | [prev] | [next] | [standalone]


#560827

FromBonita Montero <Bonita.Montero@gmail.com>
Date2022-07-12 08:40 +0200
Message-ID<taj4uk$1vndf$1@dont-email.me>
In reply to#560821
Am 12.07.2022 um 08:17 schrieb Wolfgang Kynast:
> On Tue, 12 Jul 2022 07:58:43 +0200, "Bonita Montero" posted:
> 
> ...
>> Ganz schön aufwendig für die Anforderungen, nicht ?
> 
> 
> Redet man in den passenden Gruppen nicht mehr mit dir, Christian?

Wenn ich in deinem Alter deine "Reife" hätte, dann würd
ich mich erschießen. Du bist wirklich unerträglich blöd.

[toc] | [prev] | [next] | [standalone]


#560830

Fromspamfalle2@arcor.de (Marc Stibane)
Date2022-07-12 08:55 +0200
Message-ID<1puz1wj.gh3iex1mmx0wnN@marc.my-fqdn.de>
In reply to#560818
Bonita Montero <Bonita.Montero@gmail.com> wrote:

> ich kann jetzt aus dem laufenden ADE Prozess PDFs mit beliebiger Ver-
> schlüsselung auslesen.
> Mein Tool ist ein einfaches Konsolen-Programm. Ich wolte jetzt, dass
> das Tool am Ende auf einen Tastendruck wartet wenn es nicht aus einer
> Konsole gestartet wurde bzw. der Eltern-Prozess kein Konsolen-Prozess
> ist. Ich habe jetzt bestimmt eine Stunde dran gesessen, eine Routine
> zu schreiben die feststellt, ob der Eltern-Prozess ein Konsolen-Pro-
> zess ist...

Ich habe ja kein Windows.
Bei *nix ist es üblich, dass ein Prozess eine Aufgabe erledigt. Für eine
zweite Aufgabe nimmt man einen zweiten Prozess, und verknüpft die ggf.
wenn man was Komplizierteres machen will.

In Deinem Fall ist Entschlüsseln der erste Prozess. Wenn Du am Ende
warten willst, dann rufe das doch von einem zweiten Prozess auf welches
nichts anderes macht als nach dessen Beendigung auf einen Tastendruck zu
warten.

-- 
In a world without walls and fences,
   who needs windows and gates?

[toc] | [prev] | [next] | [standalone]


#560831

FromBonita Montero <Bonita.Montero@gmail.com>
Date2022-07-12 08:59 +0200
Message-ID<taj62u$1vq12$1@dont-email.me>
In reply to#560830
Am 12.07.2022 um 08:55 schrieb Marc Stibane:
> Bonita Montero <Bonita.Montero@gmail.com> wrote:
> 
>> ich kann jetzt aus dem laufenden ADE Prozess PDFs mit beliebiger Ver-
>> schlüsselung auslesen.
>> Mein Tool ist ein einfaches Konsolen-Programm. Ich wolte jetzt, dass
>> das Tool am Ende auf einen Tastendruck wartet wenn es nicht aus einer
>> Konsole gestartet wurde bzw. der Eltern-Prozess kein Konsolen-Prozess
>> ist. Ich habe jetzt bestimmt eine Stunde dran gesessen, eine Routine
>> zu schreiben die feststellt, ob der Eltern-Prozess ein Konsolen-Pro-
>> zess ist...
> 
> Ich habe ja kein Windows.
> Bei *nix ist es üblich, dass ein Prozess eine Aufgabe erledigt. Für eine
> zweite Aufgabe nimmt man einen zweiten Prozess, und verknüpft die ggf.
> wenn man was Komplizierteres machen will.
> 
> In Deinem Fall ist Entschlüsseln der erste Prozess. Wenn Du am Ende
> warten willst, dann rufe das doch von einem zweiten Prozess auf welches
> nichts anderes macht als nach dessen Beendigung auf einen Tastendruck zu
> warten.

Was ich will: es soll nur auf den Tastendruck gewartet werden wenn der
Eltern-Prozess kein Konsolen-Prozess ist, also wenn ich das Tool z.B.
aus dem Explorer anklicke. Das geht nicht so wie Du dir das vorstellst.

[toc] | [prev] | [next] | [standalone]


#560837

Fromspamfalle2@arcor.de (Marc Stibane)
Date2022-07-12 09:24 +0200
Message-ID<1puz39g.b0oqk2oiy2faN@marc.my-fqdn.de>
In reply to#560831
Bonita Montero <Bonita.Montero@gmail.com> wrote:
> Am 12.07.2022 um 08:55 schrieb Marc Stibane:
>> Bonita Montero <Bonita.Montero@gmail.com> wrote:
 
>>> ich kann jetzt aus dem laufenden ADE Prozess PDFs mit beliebiger
>>> Verschlüsselung auslesen.
>>> Mein Tool ist ein einfaches Konsolen-Programm. Ich wolte jetzt, dass
>>> das Tool am Ende auf einen Tastendruck wartet wenn es nicht aus
>>> einer Konsole gestartet wurde bzw. der Eltern-Prozess kein
>>> Konsolen-Prozess ist. Ich habe jetzt bestimmt eine Stunde dran
>>> gesessen, eine Routine zu schreiben die feststellt, ob der
>>> Eltern-Prozess ein Konsolen-Prozess ist...
>> Ich habe ja kein Windows.
>> Bei *nix ist es üblich, dass ein Prozess eine Aufgabe erledigt. Für
>> eine zweite Aufgabe nimmt man einen zweiten Prozess, und verknüpft
>> die ggf. wenn man was Komplizierteres machen will.
>> In Deinem Fall ist Entschlüsseln der erste Prozess. Wenn Du am Ende
>> warten willst, dann rufe das doch von einem zweiten Prozess auf
>> welches nichts anderes macht als nach dessen Beendigung auf einen
>> Tastendruck zu warten.
> Was ich will: es soll nur auf den Tastendruck gewartet werden wenn der
> Eltern-Prozess kein Konsolen-Prozess ist, also wenn ich das Tool z.B.
> aus dem Explorer anklicke. Das geht nicht so wie Du dir das vorstellst.

Also einfach die Logik invertieren.
Wenn Du es von der Konsole aufrufst, gibst Du einen Parameter mit der
dem Prozess sagt dass er nicht warten braucht:
> decode -n infile outfile
 -n = no wait for keypress

Der Explorer übergibt das -n nicht, da kannst Du warten.

-- 
In a world without walls and fences,
   who needs windows and gates?

[toc] | [prev] | [next] | [standalone]


#560841

Fromspamfalle2@arcor.de (Marc Stibane)
Date2022-07-12 09:32 +0200
Message-ID<1puz3k5.cb0wuc754866N@marc.my-fqdn.de>
In reply to#560837
Marc Stibane <spamfalle2@arcor.de> wrote:
> Bonita Montero <Bonita.Montero@gmail.com> wrote:
>> Am 12.07.2022 um 08:55 schrieb Marc Stibane:
>>> Bonita Montero <Bonita.Montero@gmail.com> wrote:
 
>>>> ich kann jetzt aus dem laufenden ADE Prozess PDFs mit beliebiger
>>>> Verschlüsselung auslesen.
>>>> Mein Tool ist ein einfaches Konsolen-Programm. Ich wolte jetzt,
>>>> dass das Tool am Ende auf einen Tastendruck wartet wenn es nicht
>>>> aus einer Konsole gestartet wurde bzw. der Eltern-Prozess kein
>>>> Konsolen-Prozess ist. Ich habe jetzt bestimmt eine Stunde dran
>>>> gesessen, eine Routine zu schreiben die feststellt, ob der
>>>> Eltern-Prozess ein Konsolen-Prozess ist...
>>> Ich habe ja kein Windows.
>>> Bei *nix ist es üblich, dass ein Prozess eine Aufgabe erledigt. Für
>>> eine zweite Aufgabe nimmt man einen zweiten Prozess, und verknüpft
>>> die ggf. wenn man was Komplizierteres machen will.
>>> In Deinem Fall ist Entschlüsseln der erste Prozess. Wenn Du am Ende
>>> warten willst, dann rufe das doch von einem zweiten Prozess auf
>>> welches nichts anderes macht als nach dessen Beendigung auf einen
>>> Tastendruck zu warten.
>> Was ich will: es soll nur auf den Tastendruck gewartet werden wenn
>> der Eltern-Prozess kein Konsolen-Prozess ist, also wenn ich das Tool
>> z.B. aus dem Explorer anklicke. Das geht nicht so wie Du dir das
>> vorstellst.
> Also einfach die Logik invertieren.
> Wenn Du es von der Konsole aufrufst, gibst Du einen Parameter mit der
> dem Prozess sagt dass er nicht warten braucht:
> > decode -n infile outfile
>  -n = no wait for keypress
> 
> Der Explorer übergibt das -n nicht, da kannst Du warten.

Unter *nix würde ich mir dann noch in mein .bash_profile  schreiben
        alias my_decode='my_decode -n'
wenn ich es da immer ohne Warten aufrufen will.
Mein profile ist voll mit solchen Aliasen ;-)

-- 
In a world without walls and fences,
   who needs windows and gates?

[toc] | [prev] | [next] | [standalone]


#560874

FromBonita Montero <Bonita.Montero@gmail.com>
Date2022-07-12 11:32 +0200
Message-ID<tajf0u$20ksm$1@dont-email.me>
In reply to#560837
Am 12.07.2022 um 09:24 schrieb Marc Stibane:

> Also einfach die Logik invertieren.
> Wenn Du es von der Konsole aufrufst, gibst Du einen Parameter mit der
> dem Prozess sagt dass er nicht warten braucht:
>> decode -n infile outfile
>   -n = no wait for keypress
> Der Explorer übergibt das -n nicht, da kannst Du warten.

Unflexibler als ich es jetzt habe bzw. da erkennt der Prozess
selbst ob der Eltern-Prozess ein Konsonen-Prozess ist. Außerdem
kann ich auf Parameter dann verzichten.

[toc] | [prev] | [next] | [standalone]


#560842

FromUwe Sieber <mail@uwe-sieber.de>
Date2022-07-12 09:11 +0200
Message-ID<jj4mcqF7vsqU1@mid.individual.net>
In reply to#560818
Bonita Montero wrote:
> ...  eine Routine
> zu schreiben die feststellt, ob der Eltern-Prozess ein Konsolen-Pro-
> zess ist.

DWORD pid = 0;
GetWindowThreadProcessId(GetConsoleWindow(), &pid);
	
if ( pid == GetCurrentProcessId() ) {
	// meine Konsole
}


[toc] | [prev] | [next] | [standalone]


#560876

FromBonita Montero <Bonita.Montero@gmail.com>
Date2022-07-12 11:33 +0200
Message-ID<tajf3b$20ksm$2@dont-email.me>
In reply to#560842
Am 12.07.2022 um 09:11 schrieb Uwe Sieber:
> Bonita Montero wrote:
>> ...  eine Routine
>> zu schreiben die feststellt, ob der Eltern-Prozess ein Konsolen-Pro-
>> zess ist.
> 
> DWORD pid = 0;
> GetWindowThreadProcessId(GetConsoleWindow(), &pid);
> 
> if ( pid == GetCurrentProcessId() ) {
>      // meine Konsole
> }

Muss ich mal ausprobieren;
sieht auf jeden Fall einfacher aus als meine Lösung.

[toc] | [prev] | [next] | [standalone]


#560877

FromBonita Montero <Bonita.Montero@gmail.com>
Date2022-07-12 11:34 +0200
Message-ID<tajf54$20ksm$3@dont-email.me>
In reply to#560876
Am 12.07.2022 um 11:33 schrieb Bonita Montero:
> Am 12.07.2022 um 09:11 schrieb Uwe Sieber:
>> Bonita Montero wrote:
>>> ...  eine Routine
>>> zu schreiben die feststellt, ob der Eltern-Prozess ein Konsolen-Pro-
>>> zess ist.
>>
>> DWORD pid = 0;
>> GetWindowThreadProcessId(GetConsoleWindow(), &pid);
>>
>> if ( pid == GetCurrentProcessId() ) {
>>      // meine Konsole
>> }
> 
> Muss ich mal ausprobieren;
> sieht auf jeden Fall einfacher aus als meine Lösung.

Achso, ne, is Quatsch.
So erkenne ich ja nur meine eigene Konsole, und nicht
ob ich eine von einem Eltern-Prozess geerbt habe.

[toc] | [prev] | [next] | [standalone]


#560891

FromUwe Sieber <mail@uwe-sieber.de>
Date2022-07-12 12:23 +0200
Message-ID<jj50eiF9iqfU1@mid.individual.net>
In reply to#560877
Bonita Montero wrote:
> Am 12.07.2022 um 11:33 schrieb Bonita Montero:
>> Am 12.07.2022 um 09:11 schrieb Uwe Sieber:
>>> Bonita Montero wrote:
>>>> ...  eine Routine
>>>> zu schreiben die feststellt, ob der Eltern-Prozess ein Konsolen-Pro-
>>>> zess ist.
>>>
>>> DWORD pid = 0;
>>> GetWindowThreadProcessId(GetConsoleWindow(), &pid);
>>>
>>> if ( pid == GetCurrentProcessId() ) {
>>>      // meine Konsole
>>> }
>>
>> Muss ich mal ausprobieren;
>> sieht auf jeden Fall einfacher aus als meine Lösung.
> 
> Achso, ne, is Quatsch.
> So erkenne ich ja nur meine eigene Konsole, und nicht
> ob ich eine von einem Eltern-Prozess geerbt habe.

if ( pid == GetCurrentProcessId() ) {
       // meine Konsole
} else {
       // geerbt
}

[toc] | [prev] | [next] | [standalone]


#560905

FromBonita Montero <Bonita.Montero@gmail.com>
Date2022-07-12 13:43 +0200
Message-ID<tajmn5$21crk$1@dont-email.me>
In reply to#560891
Ne, hast recht. War eben aufm Sprung zum Futtern vor meinem
letzten Posting, dass ich das nicht entsprechend in der Doku
verizieren konnte.

Hier der ganze Code:

void waitOnConsole()
{
	HWND hwndConsole = GetConsoleWindow();
	if( !hwndConsole )
		return;
	DWORD dwConsoleProcessId;
	GetWindowThreadProcessId( hwndConsole, &dwConsoleProcessId );
	if( dwConsoleProcessId == GetCurrentProcessId() )
		return;
	XHANDLE xhConsole( GetStdHandle( STD_INPUT_HANDLE ) );
	if( xhConsole.get() == INVALID_HANDLE_VALUE )
		return;
	DWORD dwOldMode;
	if( !GetConsoleMode( xhConsole.get(), &dwOldMode ) )
		return;
	if( !SetConsoleMode( xhConsole.get(), dwOldMode & 
~(DWORD)(ENABLE_LINE_INPUT | ENABLE_ECHO_INPUT) ) )
		return;
	wchar_t ch;
	DWORD dwRead;
	ReadConsoleW( xhConsole.get(), &ch, 1, &dwRead, nullptr );
	SetConsoleMode( xhConsole.get(), dwOldMode );
}

[toc] | [prev] | [next] | [standalone]


#560906

FromBonita Montero <Bonita.Montero@gmail.com>
Date2022-07-12 13:49 +0200
Message-ID<tajn2f$21doh$1@dont-email.me>
In reply to#560891
Es geht noch simpler:

#include <Windows.h>
#include <iostream>

using namespace std;

int main()
{
	DWORD dwProcessId;
	if( GetConsoleProcessList( &dwProcessId, 1 ) >= 2 )
		cout << "multiple processes attached" << endl;
	else
		cout << "single process attached" << endl;
	for( ; ; );
}

[toc] | [prev] | [next] | [standalone]


#560907

FromBonita Montero <Bonita.Montero@gmail.com>
Date2022-07-12 14:06 +0200
Message-ID<tajo3b$21gni$1@dont-email.me>
In reply to#560906
Am 12.07.2022 um 13:49 schrieb Bonita Montero:
> Es geht noch simpler:
> 
> #include <Windows.h>
> #include <iostream>
> 
> using namespace std;
> 
> int main()
> {
>      DWORD dwProcessId;
>      if( GetConsoleProcessList( &dwProcessId, 1 ) >= 2 )
>          cout << "multiple processes attached" << endl;
>      else
>          cout << "single process attached" << endl;
>      for( ; ; );
> }

Wobei die Lösung von Uwe eigentlich besser ist, denn wenn sich der
Eltern-Prozess mit obiger Lösung verabschiedet hat während der Kind
-Prozess noch läuft, dann ist die Liste um Eins kleiner.

[toc] | [prev] | [standalone]


Back to top | Article view | ger.ct


csiph-web