<HTML><HEAD></HEAD>
<BODY dir=ltr>
<DIV dir=ltr>
<DIV style="FONT-SIZE: 12pt; FONT-FAMILY: 'Calibri'; COLOR: #000000">
<DIV>I don’t have any ProcessMessages in there!&nbsp; Actually the Program does 
a very ordered and stable startup, and has to run in sequence so moving the 
calculations to&nbsp; thread won’t actually gain me anything other than having 
it responsive to Minimise/maximise.&nbsp; That may be enough reason to do it if 
is an issue.</DIV>
<DIV>&nbsp;</DIV>
<DIV>Aside – the SW_SHOWNOACTIVE had another oddity to it – the Program B 
started fine, Program A kept focus, but the window for Program B came up in 
front of Program A which is just a nuisance.&nbsp;&nbsp; I guess its related in 
part to the the occasional bugs in Z order that MS never have sorted, where a 
new form (even modal) will appear sometimes behind the launching form.&nbsp; 
Still there Windows 7/8.</DIV>
<DIV 
style='FONT-SIZE: small; TEXT-DECORATION: none; FONT-FAMILY: "Calibri"; FONT-WEIGHT: normal; COLOR: #000000; FONT-STYLE: normal; DISPLAY: inline'>
<DIV style="FONT: 10pt tahoma">
<DIV>&nbsp;</DIV>
<DIV style="BACKGROUND: #f5f5f5">
<DIV style="font-color: black"><B>From:</B> <A title=jsmith@deltics.co.nz 
href="mailto:jsmith@deltics.co.nz">Jolyon Smith</A> </DIV>
<DIV><B>Sent:</B> Friday, July 25, 2014 1:19 PM</DIV>
<DIV><B>To:</B> <A title=delphi@listserver.123.net.nz 
href="mailto:delphi@listserver.123.net.nz">NZ Borland Developers Group - Delphi 
List</A> </DIV>
<DIV><B>Subject:</B> Re: [DUG] Shellexecute question</DIV></DIV></DIV>
<DIV>&nbsp;</DIV></DIV>
<DIV 
style='FONT-SIZE: small; TEXT-DECORATION: none; FONT-FAMILY: "Calibri"; FONT-WEIGHT: normal; COLOR: #000000; FONT-STYLE: normal; DISPLAY: inline'>
<DIV dir=ltr>
<DIV>It shouldn't be puzzling.&nbsp; It is not the fact that the form is 
starting minimized, but the fact that Application.Run varies it's behaviour for 
the SW_SHOWMINNOACTIVE value CmdShow, a variation which does not occur for 
SW_MINIMIZED.</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;</DIV>But NOOOOOoooooo - do NOT add calls to ProcessMessages().&nbsp; 
Do not add ANY calls to ProcessMessages().&nbsp; And remove any you already have 
!!! :)<BR><BR>ProcessMessages() calls make your application UI code re-entrant 
in highly unpredictable ways that can have you forever trying to find 
Heisenbugs, especially in a case like this where a user is likely to click on 
your launched app icon to see if it has "woken up" yet.<BR><BR>Do blocking work 
on a background thread, allow the UI to continue to respond on the main thread, 
and provide whatever feedback to the UI relating to the progress of the 
background thread via properly marshalled, thread safe 
mechanisms.<BR><BR><BR>You will get more sleep that way.&nbsp; :)<BR><BR></DIV>
<DIV class=gmail_extra><BR><BR>
<DIV class=gmail_quote>On 25 July 2014 12:43, John Bird <SPAN dir=ltr>&lt;<A 
href="mailto:johnkbird@paradise.net.nz" 
target=_blank>johnkbird@paradise.net.nz</A>&gt;</SPAN> wrote:<BR>
<BLOCKQUOTE class=gmail_quote 
style="PADDING-LEFT: 1ex; MARGIN: 0px 0px 0px 0.8ex; BORDER-LEFT: #ccc 1px solid">
  <DIV dir=ltr>
  <DIV dir=ltr>
  <DIV style="FONT-SIZE: 12pt; FONT-FAMILY: 'Calibri'; COLOR: #000000">
  <DIV>It looks like the code in D2007 Application.Run is the later 
  one.&nbsp;&nbsp; I would like to solve this at some stage out of curiosity so 
  will return.&nbsp;&nbsp; The SW_SHOWMINIMIZED works as expected which is a 
  puzzle.&nbsp; Usual story however, this is not on the list of urgent things to 
  get working so it has to be put aside for now.&nbsp;&nbsp; </DIV>
  <DIV>&nbsp;</DIV>
  <DIV>Its a good point you make about where to put startup code – my rule of 
  thumb has generally been initialising non component stuff can be done in the 
  form create, but I tend to put anything initialising component stuff on the 
  form show event, and this is where much of it is – there is a bit of setting 
  things visible or not depending on what properties are set and I don’t think 
  this can generally be done before the Show event.&nbsp;&nbsp; This Program B 
  does this general initialisation and then starts a timer which then fires of 
  the rest of the startup code which is long running.&nbsp;&nbsp; Some of the 
  long running code takes 20-40 seconds to run (calculations) and it doesn’t 
  respond to minimising/maximising while that is happening which is another 
  minor issue – I may need to put some extra processmessages calls in there 
  eventually.</DIV>
  <DIV>&nbsp;</DIV>
  <DIV>This relates to a previous question – the long running calculation sets 
  up some quite large arrays and I tried saving/reading them in from disk to 
  bypass the calculations but it produced a stack overflow. I am presuming that 
  this is not from the code, as Russell’s code to save and load arrays to disk 
  ran standalone, but due to the program using a larger amount of memory.&nbsp; 
  Another investigation for later on the list of priorities!</DIV>
  <DIV>
  <DIV 
  style='FONT-SIZE: small; TEXT-DECORATION: none; FONT-FAMILY: "Calibri"; FONT-WEIGHT: normal; COLOR: #000000; FONT-STYLE: normal; DISPLAY: inline'><FONT 
  size=3 face=Calibri></FONT></DIV>
  <DIV style="FONT: 10pt tahoma">
  <DIV style="BACKGROUND: #f5f5f5">
  <DIV><B>From:</B> <A title=jsmith@deltics.co.nz 
  href="mailto:jsmith@deltics.co.nz" target=_blank>Jolyon Smith</A> </DIV>
  <DIV><B>Sent:</B> Friday, July 25, 2014 7:49 AM</DIV>
  <DIV>
  <DIV><B>To:</B> <A title=delphi@listserver.123.net.nz 
  href="mailto:delphi@listserver.123.net.nz" target=_blank>NZ Borland Developers 
  Group - Delphi List</A> </DIV></DIV>
  <DIV><B>Subject:</B> Re: [DUG] Shellexecute question</DIV></DIV></DIV>
  <DIV>&nbsp;</DIV></DIV>
  <DIV 
  style='FONT-SIZE: small; TEXT-DECORATION: none; FONT-FAMILY: "Calibri"; FONT-WEIGHT: normal; COLOR: #000000; FONT-STYLE: normal; DISPLAY: inline'>
  <DIV dir=ltr>
  <DIV>
  <DIV class=h5>If the other Delphi application isn't correctly responding to 
  <B>SW_SHOWMINNOACTIVE</B> then the problem is in the <B>TApplicaiton</B> code 
  of the version of Delphi involved.&nbsp; The fact that your FormShow event 
  isn't firing suggests that it's an older version of Delphi involved, since an 
  inspection of the <B>TApplication.Run</B> method reveals how this behaviour 
  (or lack of) would eventuate.... <BR><BR>
  <DIV>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case CmdShow of</DIV>
  <DIV><B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SW_SHOWMINNOACTIVE: 
  FMainForm.FWindowState := wsMinimized;</B></DIV>
  <DIV>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SW_SHOWMAXIMIZED: 
  MainForm.WindowState := wsMaximized;</DIV>
  <DIV>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; end;</DIV>
  <DIV>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if FShowMainForm then</DIV>
  <DIV><B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if FMainForm.FWindowState = 
  wsMinimized then</B></DIV>
  <DIV><B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Minimize 
  else</B></DIV>
  <DIV>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FMainForm.Visible 
  := True;</DIV>
  <DIV>&nbsp;</DIV>
  <DIV>The internal state is forced to <B>wsMinimize, </B>bypassing normal 
  property setters, resulting in the "show" code simply calling the 
  <B>Minimize</B> method on the main form, rather than making the form visible, 
  which is why the FormShow even isn't fired.&nbsp; The form isn't shown!&nbsp; 
  i.e. the <B>FormShow</B> event will eventually fire only when the user first 
  activates the application and the window becomes shown.&nbsp; You could argue 
  that this is desirable behaviour, but doesn't suit your purposes in this 
  case.</DIV>
  <DIV>&nbsp;</DIV>
  <DIV>This was changed in later versions of Delphi.&nbsp; The above code is 
  from D7.&nbsp; The version below from XE4 (the only 2 versions I have 
  available on this system):</DIV>
  <DIV>&nbsp;</DIV>
  <DIV>
  <DIV>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case CmdShow of</DIV>
  <DIV><B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  SW_SHOWMINNOACTIVE:</B></DIV>
  <DIV><B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; begin</B></DIV>
  <DIV><B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  FInitialMainFormState := wsMinimized;</B></DIV>
  <DIV><B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  FMainForm.FWindowState := wsMinimized;</B></DIV>
  <DIV><B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; end;</B></DIV>
  <DIV>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SW_SHOWMAXIMIZED: 
  MainForm.WindowState := wsMaximized;</DIV>
  <DIV>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; end;</DIV>
  <DIV>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if FShowMainForm then</DIV>
  <DIV><B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (FMainForm.FWindowState 
  = wsMinimized) or (FInitialMainFormState = wsMinimized) then</B></DIV>
  <DIV><B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; begin</B></DIV>
  <DIV><B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  Minimize;</B></DIV>
  <DIV><B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if 
  (FInitialMainFormState = wsMinimized) then</B></DIV>
  <DIV><B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  FMainForm.Show;</B></DIV>
  <DIV>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; end else</DIV>
  <DIV>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FMainForm.Visible 
  := True;</DIV></DIV>
  <DIV>&nbsp;</DIV>
  <DIV>Now it appears that the <B>Show</B> method of your main form should be 
  called, though I haven't tested to see whether this is actually the 
  case.&nbsp; But in theory, <B>SW_SHOWMINNOACTIVE</B> should work for you if 
  you upgrade the target EXE to a more current version of Delphi.</DIV>
  <DIV>&nbsp;</DIV>
  <DIV>Alternatively, you could move the initialisation code in that EXE, 
  currently triggered by the FormShow event, to a more appropriate 
  initialisation event.&nbsp; After all, this is initialisation that needs to be 
  performed regardless of whether the form is <B>Show'</B>n or not.&nbsp; 
  ;)</DIV>
  <DIV>&nbsp;</DIV>
  <DIV>It's possible that some of that code cannot be performed in 
  <B>FormCreate</B>, which is a quite common reason to use <B>FormShow</B> 
  instead.&nbsp; If that's the case, then one possible solution is to 
  <B>post</B> a custom message to yourself in <B>FormCreate</B>, to fabricate 
  the create-deferred event you need, without relying on the form being shown to 
  generate the <B>FormShow</B> event:<BR><BR><BR>const</DIV>
  <DIV>&nbsp;&nbsp; MM_INITIALISE = WM_USER + 1;</DIV>
  <DIV>&nbsp;</DIV>
  <DIV>&nbsp;</DIV>
  <DIV>TMyForm = class(TForm)</DIV>
  <DIV>&nbsp; ...</DIV>
  <DIV>&nbsp; procedure MMInitialise(var aMessage: TMessage); message 
  MM_INITIALISE;</DIV>
  <DIV>end;</DIV>
  <DIV>&nbsp;</DIV>
  <DIV>&nbsp;</DIV>
  <DIV>TMyForm.FormOnCreate...<BR></DIV>
  <DIV>begin</DIV></DIV></DIV>
  <DIV>&nbsp;&nbsp; PostMessage(Handle, MM_INITIALISE, 0, 0);<BR>&nbsp;&nbsp; 
  ....</DIV>
  <DIV>
  <DIV class=h5>
  <DIV>end;</DIV>
  <DIV>&nbsp;</DIV>
  <DIV>&nbsp;</DIV>
  <DIV>
  <DIV>procedure TMyForm.MMInitialise(var aMessage: TMessage); </DIV></DIV>
  <DIV>begin</DIV>
  <DIV>&nbsp; // Do initialisation here...</DIV>
  <DIV>end;</DIV>
  <DIV>&nbsp;</DIV>
  <DIV>&nbsp;</DIV>
  <DIV>&nbsp;</DIV>
  <DIV>Good luck</DIV></DIV></DIV></DIV>
  <DIV>
  <DIV class=h5>
  <DIV class=gmail_extra><BR><BR>
  <DIV class=gmail_quote>On 25 July 2014 00:22, John Bird <SPAN dir=ltr>&lt;<A 
  href="mailto:johnkbird@paradise.net.nz" 
  target=_blank>johnkbird@paradise.net.nz</A>&gt;</SPAN> wrote:<BR>
  <BLOCKQUOTE class=gmail_quote 
  style="PADDING-LEFT: 1ex; MARGIN: 0px 0px 0px 0.8ex; BORDER-LEFT: #ccc 1px solid">
    <DIV dir=ltr>
    <DIV dir=ltr>
    <DIV style="FONT-SIZE: 12pt; FONT-FAMILY: 'Calibri'; COLOR: #000000">
    <DIV>Hey that should have been perfect, as I already was doing 
    SW_SHOWMINIMIZED which works fine, and so does SW_SHOWNOACTIVE&nbsp; which 
    also does what it should – start the other window but not change 
focus.</DIV>
    <DIV>&nbsp;</DIV>
    <DIV>However SW_SHOWMINNOACTIVE doesn’t work.&nbsp;&nbsp; Now the other 
    program is a Delphi program of mine that does some initialisation in the 
    Formshow event (turning on timers etc) and I am wondering if somehow the 
    event doesn’t fire.&nbsp; The process starts, but nothing runs, looks asleep 
    in Task Manager. Not worth messing around with, as its a minor issue.</DIV>
    <DIV><FONT face=Calibri></FONT>&nbsp;</DIV>
    <DIV>I toyed with using SW_SHOWINACTIVE and getting the program (Program B) 
    to minimise itself on start, but that is just damned complicated and 
    fiddly/fragile.&nbsp; It also seems prone to ending up with 2 icons on the 
    task bar, as though multiple copies have started even if only one is running 
    – (maybe due to the large amount of work it does on startup – it is 
    unresponsive for a good while) .</DIV>
    <DIV>&nbsp;</DIV>
    <DIV><FONT face=Calibri>I also tried Russells suggestion about setting the 
    foreground window and it don’t work for me (Windows 8.1)</FONT></DIV>
    <DIV>&nbsp;</DIV>
    <DIV>What I did in the end was go back to the SW_SHOWMINIMIZED and then 
    after the ShellExecute (in Program A) I put a ShowMessage saying I had 
    started the other program.&nbsp;&nbsp; Because this gives a modal clue that 
    they have to click on to continue it will do the job of setting the focus 
    back.&nbsp; And its a bit useful for them to be informed it has been 
    started.</DIV>
    <DIV 
    style='FONT-SIZE: small; TEXT-DECORATION: none; FONT-FAMILY: "Calibri"; FONT-WEIGHT: normal; COLOR: #000000; FONT-STYLE: normal; DISPLAY: inline'>
    <DIV style="FONT: 10pt tahoma">
    <DIV><FONT size=3 face=Calibri></FONT>&nbsp;</DIV>
    <DIV><FONT size=3 face=Calibri></FONT>&nbsp;</DIV>
    <DIV style="BACKGROUND: #f5f5f5">
    <DIV><B>From:</B> <A title=jsmith@deltics.co.nz 
    href="mailto:jsmith@deltics.co.nz" target=_blank>Jolyon Smith</A> </DIV>
    <DIV><B>Sent:</B> Thursday, July 24, 2014 8:21 PM</DIV>
    <DIV><B>To:</B> <A title=russell@belding.co.nz 
    href="mailto:russell@belding.co.nz" target=_blank>Russell Belding</A> ; <A 
    title=delphi@listserver.123.net.nz 
    href="mailto:delphi@listserver.123.net.nz" target=_blank>NZ Borland 
    Developers Group - Delphi List</A> </DIV>
    <DIV><B>Subject:</B> Re: [DUG] Shellexecute question</DIV></DIV></DIV>
    <DIV>&nbsp;</DIV></DIV>
    <DIV 
    style='FONT-SIZE: small; TEXT-DECORATION: none; FONT-FAMILY: "Calibri"; FONT-WEIGHT: normal; COLOR: #000000; FONT-STYLE: normal; DISPLAY: inline'>
    <DIV>
    <DIV>
    <DIV dir=ltr>Have you tried passing <STRONG 
    style="FONT-SIZE: 13px; FONT-FAMILY: 'Segoe UI','Lucida Grande',verdana,arial,helvetica,sans-serif; COLOR: rgb(42,42,42); LINE-HEIGHT: 18px">SW_SHOWMINNOACTIVE 
    instead of SW_MINIMIZED ?</STRONG> 
    <DIV><SPAN 
    style="FONT-SIZE: 13px; FONT-FAMILY: 'Segoe UI','Lucida Grande',verdana,arial,helvetica,sans-serif; COLOR: rgb(42,42,42); LINE-HEIGHT: 18px"><BR></SPAN></DIV>
    <DIV><SPAN 
    style="FONT-SIZE: 13px; FONT-FAMILY: 'Segoe UI','Lucida Grande',verdana,arial,helvetica,sans-serif; COLOR: rgb(42,42,42); LINE-HEIGHT: 18px">Caveat:&nbsp; 
    The show flag parameter is merely passed to the application being 
    executed.&nbsp; What it chooses to do with that flag is it's own affair, but 
    if you're lucky, it will respect your wishes.&nbsp; If not, then you will 
    have to engage in a focus window arms race/lotto as already suggested.&nbsp; 
    But Route #1 would be to try the officially mandated mechanisms.<BR><BR>Good 
    luck.&nbsp; :)</SPAN></DIV></DIV>
    <DIV class=gmail_extra><BR><BR>
    <DIV class=gmail_quote>On 24 July 2014 19:46, russell <SPAN dir=ltr>&lt;<A 
    href="mailto:russell@belding.co.nz" 
    target=_blank>russell@belding.co.nz</A>&gt;</SPAN> wrote:<BR>
    <BLOCKQUOTE class=gmail_quote 
    style="PADDING-LEFT: 1ex; MARGIN: 0px 0px 0px 0.8ex; BORDER-LEFT: #ccc 1px solid">
      <DIV lang=EN-NZ bgcolor="white" vlink="purple" link="blue">
      <DIV>
      <P class=MsoNormal><SPAN 
      style='FONT-SIZE: 11pt; FONT-FAMILY: "Calibri","sans-serif"; COLOR: #1f497d'>Tyr 
      this after spawning the other program.<U></U><U></U></SPAN></P>
      <P class=MsoNormal><SPAN 
      style='FONT-SIZE: 11pt; FONT-FAMILY: "Calibri","sans-serif"; COLOR: #1f497d'><U></U><U></U></SPAN>&nbsp;</P>
      <P class=MsoNormal><SPAN 
      style='FONT-SIZE: 11pt; FONT-FAMILY: "Calibri","sans-serif"; COLOR: #1f497d'>SetForegroundWindow(forms.application.mainWindow.handle)<U></U><U></U></SPAN></P>
      <P class=MsoNormal><SPAN 
      style='FONT-SIZE: 11pt; FONT-FAMILY: "Calibri","sans-serif"; COLOR: #1f497d'><U></U><U></U></SPAN>&nbsp;</P>
      <P class=MsoNormal><SPAN 
      style='FONT-SIZE: 11pt; FONT-FAMILY: "Calibri","sans-serif"; COLOR: #1f497d'>To 
      give the main window of your program focus.<U></U><U></U></SPAN></P>
      <P class=MsoNormal><SPAN 
      style='FONT-SIZE: 11pt; FONT-FAMILY: "Calibri","sans-serif"; COLOR: #1f497d'>Perhaps 
      modifications of this will take you to the window of the calling program 
      where you want the focus?<U></U><U></U></SPAN></P>
      <P class=MsoNormal><SPAN 
      style='FONT-SIZE: 11pt; FONT-FAMILY: "Calibri","sans-serif"; COLOR: #1f497d'><U></U><U></U></SPAN>&nbsp;</P>
      <P class=MsoNormal><SPAN 
      style='FONT-SIZE: 11pt; FONT-FAMILY: "Calibri","sans-serif"; COLOR: #1f497d'>Russell<U></U><U></U></SPAN></P>
      <P class=MsoNormal><SPAN 
      style='FONT-SIZE: 11pt; FONT-FAMILY: "Calibri","sans-serif"; COLOR: #1f497d'><U></U><U></U></SPAN>&nbsp;</P>
      <DIV>
      <DIV 
      style="BORDER-TOP: #b5c4df 1pt solid; BORDER-RIGHT: medium none; BORDER-BOTTOM: medium none; PADDING-BOTTOM: 0cm; PADDING-TOP: 3pt; PADDING-LEFT: 0cm; BORDER-LEFT: medium none; PADDING-RIGHT: 0cm">
      <P class=MsoNormal><B><SPAN lang=EN-US 
      style='FONT-SIZE: 10pt; FONT-FAMILY: "Tahoma","sans-serif"; COLOR: windowtext'>From:</SPAN></B><SPAN 
      lang=EN-US 
      style='FONT-SIZE: 10pt; FONT-FAMILY: "Tahoma","sans-serif"; COLOR: windowtext'> 
      <A href="mailto:delphi-bounces@listserver.123.net.nz" 
      target=_blank>delphi-bounces@listserver.123.net.nz</A> [mailto:<A 
      href="mailto:delphi-bounces@listserver.123.net.nz" 
      target=_blank>delphi-bounces@listserver.123.net.nz</A>] <B>On Behalf Of 
      </B>John Bird<BR><B>Sent:</B> Thursday, 24 July 2014 4:43 
      p.m.<BR><B>To:</B> NZ Borland Developers Group - Delphi 
      List<BR><B>Subject:</B> [DUG] Shellexecute 
      question<U></U><U></U></SPAN></P></DIV></DIV>
      <DIV>
      <DIV>
      <P class=MsoNormal><U></U><U></U>&nbsp;</P>
      <DIV>
      <DIV>
      <DIV>
      <P class=MsoNormal><SPAN 
      style='FONT-SIZE: 10pt; FONT-FAMILY: "Tahoma","sans-serif"'>I have a 
      program (Program A) that fires up another (program B)&nbsp; via 
      ShellExecute, if its not already running.&nbsp; However even though 
      Program B is started minimised, focus shifts away from Program A, which is 
      a minor nuisance.</SPAN><SPAN 
      style='FONT-FAMILY: "Calibri","sans-serif"'><U></U><U></U></SPAN></P></DIV>
      <DIV>
      <P class=MsoNormal><SPAN 
      style='FONT-FAMILY: "Calibri","sans-serif"'><U></U><U></U></SPAN>&nbsp;</P></DIV>
      <DIV>
      <P class=MsoNormal><SPAN 
      style='FONT-SIZE: 10pt; FONT-FAMILY: "Tahoma","sans-serif"'>Is there any 
      way to stop this within Delphi?&nbsp; Or will I have to do something like 
      delve into the Windows API?</SPAN><SPAN 
      style='FONT-FAMILY: "Calibri","sans-serif"'><U></U><U></U></SPAN></P></DIV>
      <DIV>
      <P class=MsoNormal><SPAN 
      style='FONT-FAMILY: "Calibri","sans-serif"'><U></U><U></U></SPAN>&nbsp;</P></DIV>
      <DIV>
      <P class=MsoNormal><SPAN style='FONT-FAMILY: "Calibri","sans-serif"'>if 
      ShellExecute(Application.Mainform.Handle, 'open', Pchar(aProgName), 
      PChar(aparaml), PChar(aDir), SW_SHOWMINIMIZED) &lt;= 32 
      then<U></U><U></U></SPAN></P></DIV>
      <DIV>
      <P class=MsoNormal><SPAN 
      style='FONT-FAMILY: "Calibri","sans-serif"'>&nbsp; ShowMessage('Start 
      Minimised error:')<U></U><U></U></SPAN></P></DIV>
      <DIV>
      <P class=MsoNormal><SPAN 
      style='FONT-FAMILY: "Calibri","sans-serif"'><U></U><U></U></SPAN>&nbsp;</P></DIV></DIV></DIV></DIV></DIV></DIV></DIV><BR>_______________________________________________<BR>NZ 
      Borland Developers Group - Delphi mailing list<BR>Post: <A 
      href="mailto:delphi@listserver.123.net.nz" 
      target=_blank>delphi@listserver.123.net.nz</A><BR>Admin: <A 
      href="http://delphi.org.nz/mailman/listinfo/delphi" 
      target=_blank>http://delphi.org.nz/mailman/listinfo/delphi</A><BR>Unsubscribe: 
      send an email to <A href="mailto:delphi-request@listserver.123.net.nz" 
      target=_blank>delphi-request@listserver.123.net.nz</A> with Subject: 
      unsubscribe<BR></BLOCKQUOTE></DIV>
    <DIV>&nbsp;</DIV></DIV></DIV></DIV>
    <HR>

    <DIV>_______________________________________________<BR>NZ Borland 
    Developers Group - Delphi mailing list<BR>Post: <A 
    href="mailto:delphi@listserver.123.net.nz" 
    target=_blank>delphi@listserver.123.net.nz</A><BR>Admin: <A 
    href="http://delphi.org.nz/mailman/listinfo/delphi" 
    target=_blank>http://delphi.org.nz/mailman/listinfo/delphi</A><BR>Unsubscribe: 
    send an email to <A href="mailto:delphi-request@listserver.123.net.nz" 
    target=_blank>delphi-request@listserver.123.net.nz</A> with Subject: 
    unsubscribe</DIV></DIV></DIV></DIV></DIV><BR>_______________________________________________<BR>NZ 
    Borland Developers Group - Delphi mailing list<BR>Post: <A 
    href="mailto:delphi@listserver.123.net.nz" 
    target=_blank>delphi@listserver.123.net.nz</A><BR>Admin: <A 
    href="http://delphi.org.nz/mailman/listinfo/delphi" 
    target=_blank>http://delphi.org.nz/mailman/listinfo/delphi</A><BR>Unsubscribe: 
    send an email to <A href="mailto:delphi-request@listserver.123.net.nz" 
    target=_blank>delphi-request@listserver.123.net.nz</A> with Subject: 
    unsubscribe<BR></BLOCKQUOTE></DIV>
  <DIV>&nbsp;</DIV></DIV>
  <HR>
  _______________________________________________<BR>NZ Borland Developers Group 
  - Delphi mailing list<BR>Post: <A href="mailto:delphi@listserver.123.net.nz" 
  target=_blank>delphi@listserver.123.net.nz</A><BR>Admin: <A 
  href="http://delphi.org.nz/mailman/listinfo/delphi" 
  target=_blank>http://delphi.org.nz/mailman/listinfo/delphi</A><BR>Unsubscribe: 
  send an email to <A href="mailto:delphi-request@listserver.123.net.nz" 
  target=_blank>delphi-request@listserver.123.net.nz</A> with Subject: 
  unsubscribe 
  </DIV></DIV></DIV></DIV></DIV></DIV><BR>_______________________________________________<BR>NZ 
  Borland Developers Group - Delphi mailing list<BR>Post: <A 
  href="mailto:delphi@listserver.123.net.nz">delphi@listserver.123.net.nz</A><BR>Admin: 
  <A href="http://delphi.org.nz/mailman/listinfo/delphi" 
  target=_blank>http://delphi.org.nz/mailman/listinfo/delphi</A><BR>Unsubscribe: 
  send an email to <A 
  href="mailto:delphi-request@listserver.123.net.nz">delphi-request@listserver.123.net.nz</A> 
  with Subject: unsubscribe<BR></BLOCKQUOTE></DIV>
<DIV>&nbsp;</DIV></DIV>
<P>
<HR>
_______________________________________________<BR>NZ Borland Developers Group - 
Delphi mailing list<BR>Post: delphi@listserver.123.net.nz<BR>Admin: 
http://delphi.org.nz/mailman/listinfo/delphi<BR>Unsubscribe: send an email to 
delphi-request@listserver.123.net.nz with Subject: 
unsubscribe</DIV></DIV></DIV></BODY></HTML>