<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=iso-8859-1">
<META content="MSHTML 6.00.2900.2912" name=GENERATOR>
<STYLE></STYLE>
</HEAD>
<BODY bgColor=#ffffff>
<DIV><FONT face=Arial size=2>Many thanks for that.&nbsp; It sounds exactly what 
my problem is.&nbsp; I had an inkling&nbsp;something like that maybe required 
after finding something&nbsp;vaguely similar on another forum, but it was 
dealing with Delphi DLL's.&nbsp; It said to&nbsp;call Application.HandleMessage 
for&nbsp;the DLL from within the main EXE's Application.OnIdle.</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
<DIV><FONT face=Arial size=2>Carl on this list gave me the code to 
do&nbsp;selective message queue processing a couple of weeks ago, for a 
different problem, which I didn't need to use in the end, but perhaps it will 
come in handy.</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
<DIV><FONT face=Arial size=2>Just to fill you in a bit, the DLL's are&nbsp;3rd 
party&nbsp;Winamp compatible DSP plugins.&nbsp; Not written by Nullsoft (the 
makers of Winamp).&nbsp; All functions and structures are publically published 
and standard for all the DSP DLL's.&nbsp; I'm loading them in my player for 
processing audio.&nbsp; The processing&nbsp;works fine, but not the tab key on 
non-modal forms.&nbsp; Some DSP's use modal configuration forms and the tab key 
works fine for those.</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
<DIV><FONT face=Arial size=2>After a couple of hours&nbsp;of trying various 
methods to process messages, it's not working.&nbsp; There must be something 
fundamental that Winamp is doing that I need to do but don't know 
what.</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
<DIV><FONT face=Arial size=2>There is no easy way to get the window handle of 
the form!&nbsp; I had to do a FindWindow to find it based on the visible window 
title, which I have done&nbsp;for one DLL.&nbsp; But </FONT><FONT face=Arial 
size=2><FONT face=Arial size=2>Winamp doesn't know the name of the DLL form, so 
it can't be doing&nbsp;a&nbsp;findwindow, so I'm not sure I'm on the right 
track.</FONT></FONT></DIV>
<DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
<DIV><FONT face=Arial size=2>But if Winamp is doing it then it must be 
possible!</DIV></FONT>
<DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
<DIV><FONT face=Arial size=2>I get some messages processing for this window if I 
stop Windows doing it automatically, so it has found the correct window, but 
Windows appears to be processing all the messages that are in the queue 
anyway.</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
<DIV><FONT face=Arial size=2>The fact that the Windows default beep occurs when 
pressing the key would suggest that no message is going anywhere, doesn't 
it?</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
<DIV><FONT face=Arial size=2>I've used PeekMessage along 
with&nbsp;IsDialogMessage which I think is correct.&nbsp; I've also tried 
TranslateMessage/DispatchMessage with no luck.</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV><FONT face=Arial size=2>
<DIV>I don't suppose anyone else has any further ideas before I give my blind 
users the bad news.</DIV>
<DIV>&nbsp;</DIV></FONT><FONT face=Arial size=2></FONT>
<DIV><FONT face=Arial size=2>Thanks,</FONT></DIV>
<DIV><FONT face=Arial size=2>Ross.</FONT></DIV>
<BLOCKQUOTE 
style="PADDING-RIGHT: 0px; PADDING-LEFT: 5px; MARGIN-LEFT: 5px; BORDER-LEFT: #000000 2px solid; MARGIN-RIGHT: 0px">
  <DIV style="FONT: 10pt arial">----- Original Message ----- </DIV>
  <DIV 
  style="BACKGROUND: #e4e4e4; FONT: 10pt arial; font-color: black"><B>From:</B> 
  <A title=paul.a.norman@gmail.com href="mailto:paul.a.norman@gmail.com">Paul A 
  Norman</A> </DIV>
  <DIV style="FONT: 10pt arial"><B>To:</B> <A title=delphi@ns3.123.co.nz 
  href="mailto:delphi@ns3.123.co.nz">NZ Borland Developers Group - Delphi 
  List</A> </DIV>
  <DIV style="FONT: 10pt arial"><B>Sent:</B> Thursday, August 03, 2006 5:33 
  PM</DIV>
  <DIV style="FONT: 10pt arial"><B>Subject:</B> Re: [DUG] DLL Forms</DIV>
  <DIV><BR></DIV>
  <DIV>Dear Ross,</DIV>
  <DIV>&nbsp;</DIV>
  <DIV>Here is an answer that Peter Below made years ago to a simillar 
  question.</DIV>
  <DIV>Not exactly the same as your description but may help.</DIV>
  <DIV>&nbsp;</DIV>
  <DIV>Paul</DIV>
  <DIV>-------</DIV>
  <DIV>&nbsp;</DIV>
  <DIV>&gt; I have a <FONT style="BACKGROUND-COLOR: #0a246a" 
  color=#ffffff>dll</FONT> that shows a <FONT style="BACKGROUND-COLOR: #0a246a" 
  color=#ffffff>form</FONT>. When I show the <FONT 
  style="BACKGROUND-COLOR: #0a246a" color=#ffffff>form</FONT> using ShowModal, 
  <FONT style="BACKGROUND-COLOR: #0a246a" color=#ffffff>tab</FONT> &gt; works 
  fine (to go through all the controls). When I just use show (instead &gt; of 
  showmodal), I lose the ability to use the <FONT 
  style="BACKGROUND-COLOR: #0a246a" color=#ffffff>tab</FONT> key (I can press 
  <FONT style="BACKGROUND-COLOR: #0a246a" color=#ffffff>tab</FONT> but it &gt; 
  never moves to the next control). Am I doing something wrong? Well, you use a 
  non-modal window in a <FONT style="BACKGROUND-COLOR: #0a246a" 
  color=#ffffff>DLL</FONT> &lt;g&gt;. The major problem with non-modal windows 
  is that they depend on the applications message loop for sustenance. Things 
  like navigation between controls on a modal dialog are implemented in a 
  typical Windows app by calling the IsDialogMessage API function as part of the 
  message loop code. But this function requires the handle of the non-modal 
  dialog, so the apps usually have to make sure that the message loop code can 
  always get at the window handle of the currently active nonmodal dialog (this 
  can get grossly complex and always requires active participation of the 
  dialog). This scheme has no chance of working if the dialog in question is not 
  even part of the application and even less if it's not even a dialog but a 
  Delphi <FONT style="BACKGROUND-COLOR: #0a246a" color=#ffffff>form</FONT>. 
  Peter Below (TeamB) <A 
  href="mailto:100113.1101@compuserve.com">100113.1101@compuserve.com</A>) No 
  replies in private e-mail, please, unless explicitly requested!</DIV><BR><BR>
  <DIV><SPAN class=gmail_quote>On 30/07/06, <B class=gmail_sendername>Ross 
  Levis</B> &lt;<A 
  href="mailto:ross@stationplaylist.com">ross@stationplaylist.com</A>&gt; 
  wrote:</SPAN> 
  <BLOCKQUOTE class=gmail_quote 
  style="PADDING-LEFT: 1ex; MARGIN: 0px 0px 0px 0.8ex; BORDER-LEFT: #ccc 1px solid">I've 
    got a more serious problem I hope someone can help me with.<BR><BR>I'm 
    loading some 3rd party C++ DLL's from my Delphi app.&nbsp;&nbsp;Most of 
    these <BR>DLL's have a configuration form.<BR><BR>Some blind users have just 
    pointed out that the tab key is not working<BR>in the DLL 
    forms.&nbsp;&nbsp;This is a major problem for blind users who reply on<BR>it 
    for navigation.&nbsp;&nbsp;All other keys including the arrow keys appear to 
    <BR>work fine.<BR><BR>Other applications that load the same DLL's do not 
    have this problem.<BR><BR>I'm assuming my app is taking over the tab key 
    even when the DLL form<BR>has the focus.&nbsp;&nbsp;Is there a simple method 
    to allow get around this? <BR><BR>Many 
    thanks,<BR>Ross.<BR><BR>_______________________________________________<BR>Delphi 
    mailing list<BR><A 
    href="mailto:Delphi@ns3.123.co.nz">Delphi@ns3.123.co.nz</A><BR><A 
    href="http://ns3.123.co.nz/mailman/listinfo/delphi">http://ns3.123.co.nz/mailman/listinfo/delphi</A><BR></BLOCKQUOTE></DIV><BR>
  <P>
  <HR>

  <P></P>_______________________________________________<BR>Delphi mailing 
  list<BR>Delphi@ns3.123.co.nz<BR>http://ns3.123.co.nz/mailman/listinfo/delphi<BR></BLOCKQUOTE></BODY></HTML>