<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1252">
<META NAME="Generator" CONTENT="Microsoft Word 97">
<TITLE>Hallo, ich möchte ein Berechnungsorogramm von mir aus einer BCB1</TITLE>
<META NAME="Template" CONTENT="C:\Programme\Microsoft Office\Office\html.dot">
</HEAD>
<BODY LINK="#0000ff" VLINK="#800080">
<P>Hallo, ich möchte ein Berechnungsorogramm von mir aus einer BCB1.0 Application unter NT4.0 fernsteuern. Dazu benutze ich folgenden Code:</P>
<B><P>void __fastcall</B> TForm1::ProgrammAufrufen</P><DIR>
<DIR>
<P>(<B>char</B> *ClassName, <B>char</B> *ExeName, <B>long</B> Command, <B>long</B> Param)</P></DIR>
</DIR>
<P>{</P><DIR>
<DIR>
<P>HWND hWnd;</P>
<B><P>for</B>(<B>int</B> i=0; i<2; i++)</P>
<P>{ </P><DIR>
<DIR>
<P>hWnd=FindWindow(ClassName,NULL);</P>
<B><P>if</B>(hWnd==NULL)</P>
<P>{</P><DIR>
<DIR>
<P>ShellExecute(Form1->Handle,"open",ExeName,0,0,SW_SHOWNORMAL);</P></DIR>
</DIR>
<P>}</P>
<B><P>else</B> <B>break</B>;</P></DIR>
</DIR>
<P>}</P>
<B><P>if</B>(hWnd==NULL) <B>return</B>;</P>
<P>PostMessage(hWnd,WM_COMMAND,Command,Param);</P></DIR>
</DIR>
<P>}</P>
<P>Wenn das Fenster nicht gefunden wurde, muß das Programm gestartet werden. Beim zweiten Durchlauf der Schleife sollte es dann gefunden werden. Wird es aber nicht. Statt dessen wird es zweimal gestartet. Wenn ich statt <B>ShellExecute</B> das gute alte <B>WinExec</B> nehme, funktioniert es. Wenn ich das Programm vorher schon aufgerufen habe, geht es auch. Was mache ich falsch ? </P>
<P>Danke - Günther</P></BODY>
</HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1252">
<META NAME="Generator" CONTENT="Microsoft Word 97">
<TITLE>Hallo, ich möchte ein Berechnungsorogramm von mir aus einer BCB1</TITLE>
<META NAME="Template" CONTENT="C:\Programme\Microsoft Office\Office\html.dot">
</HEAD>
<BODY LINK="#0000ff" VLINK="#800080">
<P>Hallo, ich möchte ein Berechnungsorogramm von mir aus einer BCB1.0 Application unter NT4.0 fernsteuern. Dazu benutze ich folgenden Code:</P>
<B><P>void __fastcall</B> TForm1::ProgrammAufrufen</P><DIR>
<DIR>
<P>(<B>char</B> *ClassName, <B>char</B> *ExeName, <B>long</B> Command, <B>long</B> Param)</P></DIR>
</DIR>
<P>{</P><DIR>
<DIR>
<P>HWND hWnd;</P>
<B><P>for</B>(<B>int</B> i=0; i<2; i++)</P>
<P>{ </P><DIR>
<DIR>
<P>hWnd=FindWindow(ClassName,NULL);</P>
<B><P>if</B>(hWnd==NULL)</P>
<P>{</P><DIR>
<DIR>
<P>ShellExecute(Form1->Handle,"open",ExeName,0,0,SW_SHOWNORMAL);</P></DIR>
</DIR>
<P>}</P>
<B><P>else</B> <B>break</B>;</P></DIR>
</DIR>
<P>}</P>
<B><P>if</B>(hWnd==NULL) <B>return</B>;</P>
<P>PostMessage(hWnd,WM_COMMAND,Command,Param);</P></DIR>
</DIR>
<P>}</P>
<P>Wenn das Fenster nicht gefunden wurde, muß das Programm gestartet werden. Beim zweiten Durchlauf der Schleife sollte es dann gefunden werden. Wird es aber nicht. Statt dessen wird es zweimal gestartet. Wenn ich statt <B>ShellExecute</B> das gute alte <B>WinExec</B> nehme, funktioniert es. Wenn ich das Programm vorher schon aufgerufen habe, geht es auch. Was mache ich falsch ? </P>
<P>Danke - Günther</P></BODY>
</HTML>
Comment