From: <tur...@ma...> - 2010-02-12 20:29:25
|
I am building a application using the latest tools available via the cygwin setup program. The application is supposed to open a separate DOS console window, but all processing seems to occur within the context of the DOS console window where I execute the program. I have cut the program down to the code that just does the process creation. I would want the following program to open a separate DOS window to ask me for a password for the rexec command. I built the test program with: gcc -mno-cygwin creprc.c -o creprc Could someone help me understand what I am doing wrong? -Jeff #include <windows.h> #include <shellapi.h> #include <string.h> main() { char buffer[128]; STARTUPINFO start; PROCESS_INFORMATION child; strcpy (buffer, "rexec testhost -l testuser testcommand"); memset (&start, 0, sizeof (start)); start.cb = sizeof (start); start.dwFlags = STARTF_USESHOWWINDOW; start.wShowWindow = SW_NORMAL; memset (&child, 0, sizeof (child)); if (CreateProcess (NULL, buffer, NULL, NULL, FALSE, 0, NULL, NULL, &start, &child)) { CloseHandle (child.hThread); CloseHandle (child.hProcess); } } |
From: Natalie T. <nat...@in...> - 2010-02-12 21:08:22
|
Hi Jeff, It seems that you have the wrong list. Cygwin is a separate and different project than mingw (although both provide "unix-like" programming experiences under Windows). You want to find the cygwin support list. Best, Natalie On 2/12/10 12:29 PM, tur...@ma... wrote: > I am building a application using the latest tools available via the cygwin setup program. The application is supposed to open a separate DOS console window, but all processing seems to occur within the context of the DOS console window where I execute the program. > > I have cut the program down to the code that just does the process creation. I would want the following program to open a separate DOS window to ask me for a password for the rexec command. > > I built the test program with: gcc -mno-cygwin creprc.c -o creprc > > Could someone help me understand what I am doing wrong? > > -Jeff > > #include<windows.h> > #include<shellapi.h> > #include<string.h> > > main() > { > char buffer[128]; > STARTUPINFO start; > PROCESS_INFORMATION child; > > strcpy (buffer, "rexec testhost -l testuser testcommand"); > memset (&start, 0, sizeof (start)); > start.cb = sizeof (start); > start.dwFlags = STARTF_USESHOWWINDOW; > start.wShowWindow = SW_NORMAL; > > memset (&child, 0, sizeof (child)); > > if (CreateProcess (NULL, buffer, NULL, NULL, FALSE, 0, > NULL, NULL,&start,&child)) > { > CloseHandle (child.hThread); > CloseHandle (child.hProcess); > } > } > > > ------------------------------------------------------------------------------ > SOLARIS 10 is the OS for Data Centers - provides features such as DTrace, > Predictive Self Healing and Award Winning ZFS. Get Solaris 10 NOW > http://p.sf.net/sfu/solaris-dev2dev > _______________________________________________ > MinGW-users mailing list > Min...@li... > > This list observes the Etiquette found at > http://www.mingw.org/Mailing_Lists. > We ask that you be polite and do the same. Disregard for the list etiquette may cause your account to be moderated. > > _______________________________________________ > You may change your MinGW Account Options or unsubscribe at: > https://lists.sourceforge.net/lists/listinfo/mingw-users > |
From: <tur...@ma...> - 2010-02-12 21:58:16
|
---- Natalie Tasman <nat...@in...> wrote: > Hi Jeff, > > It seems that you have the wrong list. Cygwin is a separate and > different project than mingw (although both provide "unix-like" > programming experiences under Windows). You want to find the cygwin > support list. > > Best, > > Natalie Natalie, Thanks for pointing out what has now become obvious to me. -Jeff |
From: Greg C. <gch...@sb...> - 2010-02-12 22:05:48
|
On 2010-02-12 21:02Z, Natalie Tasman wrote: > > It seems that you have the wrong list. Cygwin is a separate and > different project than mingw (although both provide "unix-like" > programming experiences under Windows). You want to find the cygwin > support list. In this case, though, the OP is using '-mno-cygwin': >> I built the test program with: gcc -mno-cygwin creprc.c -o creprc and if he asks on the Cygwin list, they'll probably send him here. It might be better to ask in some windows-api forum--AFAICT the question isn't MinGW-specific. |
From: <tur...@ma...> - 2010-02-13 04:21:21
|
---- Greg Chicares <gch...@sb...t> wrote: > On 2010-02-12 21:02Z, Natalie Tasman wrote: > > In this case, though, the OP is using '-mno-cygwin': > > >> I built the test program with: gcc -mno-cygwin creprc.c -o creprc > > and if he asks on the Cygwin list, they'll probably send him here. > > It might be better to ask in some windows-api forum--AFAICT the > question isn't MinGW-specific. Thanks for the clarification Greg, I have since tried on the cygwin list as well and the first response was not promising. As I said on the cygwin list, my original note should of been more specific. The problem is not with the code nor the Windows API. The example comes right out of the xming source code and I know it should work. I'm using cygwin to cross compile. The only problem I have with the entire build is the inability to create a separate console window with the code in the orignal note. -Jeff |
From: Tor L. <tm...@ik...> - 2010-02-13 09:17:37
|
> I am building a application using the latest tools available via the cygwin setup program. The application is supposed to > open a separate DOS console window, but all processing seems to occur within the context of the DOS console window > where I execute the program. Please, don't talk about "DOS console windows". (MS-)DOS has nothing to do with console windows in Windows. Just say "console window". And read up on the documentation for the Win32 functions AllocConsole(), FreeConsole() and AttachConsole() for starters. (Note that when the Win32 docs talk about "standard input, standard ouput and standard error handles", it means the Win32 concepts with those names, not the C library file handles 0, 1 and 2, and even less the C library streams stdin, stdout and stderr. Unlike Unix, in Windows the C library concepts like file handles are not tightly coupled to the concepts used by the system call interface. This is especiually obvious when one considers that there are a bunch of separate C libraries one can use, depending on compiler...) > I would want the following program to open a separate DOS window to ask me for a password > I built the test program with: gcc -mno-cygwin creprc.c -o creprc So as you didn't use the -mwindows option, you build it as a so-called console executable? I.e., if you run the program by double-clicking from Explorer, or from the Start Menu, a console window will open automatically? (But if you start it in a shell in a console window, that will not happen, the process will be attached to the paren't console.) I think what you want is to build the program as a so-called GUI executable (a misleading name; it is not related to whether the exe can have a GUI or not) by using the -mwindows option. That means that even if you start it from Explorer, no console window will be automatically opened. Then when needed, explicitly allocate (open) a console window with AllocConsole(), do your IO to it, and deallocate (close) the console window with FreeConsole() when done. To do C level IO to the console window, open C files to/from the file names "CONIN$" and "CONOUT$". (As a process has at most just one console window, there is not need to specify "which" console window is meant.) You probably want to use the Win32 APi to set the colours and size of the console window you allocate to something less 80s-looking than the default white on black, 24x80, just to avoid clueless users thinking "whoa, this must be some old DOS program" ;) As others already said, this is a generic Win32 question, not really specific to MinGW at all. (Except for the -mwindows option; Microsoft's linker uses -subsystem:windows for the same functionality.) --tml |
From: <tur...@ma...> - 2010-02-14 02:04:21
|
---- Tor Lillqvist <tm...@ik...> wrote: >I think what you want is to build the program as a so-called GUI >executable (a misleading name; it is not related to whether the exe >can have a GUI or not) by using the -mwindows option. That means that >even if you start it from Explorer, no console window will be >automatically opened. Thank you, the -mwindows build option was what I neeeded. -Jeff |