Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > ger.ct > #560818 > unrolled thread
| Started by | Bonita Montero <Bonita.Montero@gmail.com> |
|---|---|
| First post | 2022-07-12 07:58 +0200 |
| Last post | 2022-07-12 14:06 +0200 |
| Articles | 19 — 5 participants |
Back to article view | Back to ger.ct
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
| From | Bonita Montero <Bonita.Montero@gmail.com> |
|---|---|
| Date | 2022-07-12 07:58 +0200 |
| Subject | Wie 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]
| From | Wolfgang Kynast <wky@gmx.de> |
|---|---|
| Date | 2022-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]
| From | Marco Moock <mo01@posteo.de> |
|---|---|
| Date | 2022-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]
| From | Bonita Montero <Bonita.Montero@gmail.com> |
|---|---|
| Date | 2022-07-12 08:41 +0200 |
| Subject | Re: [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]
| From | Marco Moock <mo01@posteo.de> |
|---|---|
| Date | 2022-07-12 09:13 +0200 |
| Subject | Re: [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]
| From | Bonita Montero <Bonita.Montero@gmail.com> |
|---|---|
| Date | 2022-07-12 09:20 +0200 |
| Subject | Re: [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]
| From | Bonita Montero <Bonita.Montero@gmail.com> |
|---|---|
| Date | 2022-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]
| From | spamfalle2@arcor.de (Marc Stibane) |
|---|---|
| Date | 2022-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]
| From | Bonita Montero <Bonita.Montero@gmail.com> |
|---|---|
| Date | 2022-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]
| From | spamfalle2@arcor.de (Marc Stibane) |
|---|---|
| Date | 2022-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]
| From | spamfalle2@arcor.de (Marc Stibane) |
|---|---|
| Date | 2022-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]
| From | Bonita Montero <Bonita.Montero@gmail.com> |
|---|---|
| Date | 2022-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]
| From | Uwe Sieber <mail@uwe-sieber.de> |
|---|---|
| Date | 2022-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]
| From | Bonita Montero <Bonita.Montero@gmail.com> |
|---|---|
| Date | 2022-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]
| From | Bonita Montero <Bonita.Montero@gmail.com> |
|---|---|
| Date | 2022-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]
| From | Uwe Sieber <mail@uwe-sieber.de> |
|---|---|
| Date | 2022-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]
| From | Bonita Montero <Bonita.Montero@gmail.com> |
|---|---|
| Date | 2022-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]
| From | Bonita Montero <Bonita.Montero@gmail.com> |
|---|---|
| Date | 2022-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]
| From | Bonita Montero <Bonita.Montero@gmail.com> |
|---|---|
| Date | 2022-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