<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Problem mit SendInput]]></title><description><![CDATA[<p>Hi,<br />
Habe wiedermal ein Problem :<br />
Ich habe die Aufgabe bekommen einen Text über eine Serielle Schnittstelle abzufragen und diesen dann an eine vom Benutzer wählbare Anwendung zu senden.<br />
Da ich erstmal mit SendInput einen Text richtig verschicken möchte habe ich zum testen erstmal ein Memo für den TextInput genommen.<br />
Mein Problem ist jetzt :<br />
Text wird komplett richtig übertragen, Zeichen jedoch (wie &quot;.&quot; &quot;,&quot; &quot;+&quot; usw.) werden einfach weggelassen und ich komm nicht drauf warum <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
<p>Hier noch etwas code der vielleicht helfen könnte :</p>
<pre><code class="language-cpp">void __fastcall TForm1::Button1Click(TObject *Sender)
{
 AnsiString progname = Edit1-&gt;Text;
 AnsiString text = Memo1-&gt;Lines-&gt;Text;
 dazu = 0;
 int* pos=new int[text.Length()];
 for(int i=1;i&lt;=text.Length();i++)
 {
  int puffer = static_cast&lt;char&gt;(text[i]);
  if((puffer&gt;=65)&amp;&amp;(puffer&lt;=90)){
   pos[dazu]=i;
   dazu++;
  }
 }
 text = UpperCase(text);
 DWORD SendDataTo(TCHAR* iWndName, TCHAR* iData,int hinzu,int* pos=new int[dazu]);
 SendDataTo(progname.c_str(), text.c_str(), dazu, pos);
}
//---------------------------------------------------------------------------

DWORD SendDataTo(TCHAR* iWndName,TCHAR* iData,int hinzu,int* pos)
{
 if(iWndName==NULL||iData==NULL) return -1L;

 if(strlen(iWndName)==0||strlen(iData)==0)return -2L;

 //Fenster wird gesucht
 HWND myHWND = ::FindWindow(NULL,iWndName);
 if(myHWND==NULL) return GetLastError();

 if(!SetForegroundWindow(myHWND)) return GetLastError();

 int textlen = strlen(iData);        //Anzahl der Zeichen
 UINT Len = (textlen*2)+(hinzu*2)+2; //Alle Tasten drücken/loslassen +
                                     //Shift drücken/loslassen + Enter drücken/loslassen
 INPUT* input= new INPUT[Len];
 int i = 0;
 int u = 0;                          
 int o = 0;
 while(i &lt; (Len-2)) {
  if((pos[o]-1)==u) { //-----------------------Bei großen Buchstaben-------------------
   input[i].type=INPUT_KEYBOARD;  //-----------Shift drücken--------
   input[i].ki.wVk = VK_RSHIFT;
   input[i].ki.wScan = 0;
   input[i].ki.dwFlags = 0;
   input[i].ki.dwExtraInfo = 0;
   i++;
   input[i].type=INPUT_KEYBOARD; //-----------Buchstabe drücken--------
   input[i].ki.wVk = iData[u];
   input[i].ki.wScan = 0;
   input[i].ki.dwFlags = 0;
   input[i].ki.dwExtraInfo = 0;
   i++;
   input[i].type=INPUT_KEYBOARD; //-----------Buchstabe loslassen--------
   input[i].ki.wVk = iData[u];
   input[i].ki.wScan = 0;
   input[i].ki.dwFlags = KEYEVENTF_KEYUP;
   input[i].ki.dwExtraInfo = 0;
   i++;
   input[i].type=INPUT_KEYBOARD;  //-----------Shift loslassen--------
   input[i].ki.wVk = VK_RSHIFT;
   input[i].ki.wScan = 0;
   input[i].ki.dwFlags = KEYEVENTF_KEYUP;
   input[i].ki.dwExtraInfo = 0;
   i++;
   u++;
   o++;
  }
  else { //-----------------------Bei kleinen Buchstaben-------------------
   input[i].type=INPUT_KEYBOARD;  //-----------Buchstabe drücken--------
   input[i].ki.wVk = iData[u];
   input[i].ki.wScan = 0;
   input[i].ki.dwFlags = 0;
   input[i].ki.dwExtraInfo = 0;
   //----------Taste loslassen :---------
   i++;
   input[i].type=INPUT_KEYBOARD; //-----------Buchstabe loslassen--------
   input[i].ki.wVk = iData[u];
   input[i].ki.wScan = 0;
   input[i].ki.dwFlags = KEYEVENTF_KEYUP;
   input[i].ki.dwExtraInfo = 0;
   i++;
   u++;
  }
 }
 input[i].type=INPUT_KEYBOARD;  //-----------Enter drücken--------
 input[i].ki.wVk = VK_RETURN;
 input[i].ki.wScan = 0;
 input[i].ki.dwFlags = 0;
 input[i].ki.dwExtraInfo = 0;
 i++;
 input[i].type=INPUT_KEYBOARD; //-----------Enter loslassen--------
 input[i].ki.wVk = VK_RETURN;
 input[i].ki.wScan = 0;
 input[i].ki.dwFlags = KEYEVENTF_KEYUP;
 input[i].ki.dwExtraInfo = 0;

 int cbSize = sizeof(INPUT);

 //--------TEST-------- (was steht kurz vorm senden alles in &quot;input&quot;
 char *test = new char[Len];
 for(int u=0;u&lt;=(Len);u++)
 {
  test[u]=input[u].ki.wVk; //nun kann bei EinzelAnweisungen nachgeschaut
 }                         //werden was in &quot;test&quot; (einem Abbild von &quot;input&quot;) steht
 //--------TEST--------

 UINT len= SendInput(Len,input,cbSize);  //Hier wird nun gesendet

 DWORD ErrCode(0);
 if(len &lt; Len) {
  ErrCode = GetLastError();
 }

 if(input) {
  delete[] input;
 }

 return ErrCode;
}
</code></pre>
<p>Im großen und ganzen wird der Text eingelesen und wenn es ein Großbuchstabe ist wird ein Shift druckt mit &quot;simuliert&quot; und dann erst der eigentliche Tastendruck simuliert und ansonsten nur der eigentliche Tastendruck...<br />
Bitte helft mir ich weiß echt nicht mehr weiter <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
<p>Gruß PillathMrNight</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/170144/problem-mit-sendinput</link><generator>RSS for Node</generator><lastBuildDate>Thu, 13 Aug 2026 20:53:57 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/170144.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 12 Jan 2007 09:52:30 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Problem mit SendInput on Fri, 12 Jan 2007 09:52:30 GMT]]></title><description><![CDATA[<p>Hi,<br />
Habe wiedermal ein Problem :<br />
Ich habe die Aufgabe bekommen einen Text über eine Serielle Schnittstelle abzufragen und diesen dann an eine vom Benutzer wählbare Anwendung zu senden.<br />
Da ich erstmal mit SendInput einen Text richtig verschicken möchte habe ich zum testen erstmal ein Memo für den TextInput genommen.<br />
Mein Problem ist jetzt :<br />
Text wird komplett richtig übertragen, Zeichen jedoch (wie &quot;.&quot; &quot;,&quot; &quot;+&quot; usw.) werden einfach weggelassen und ich komm nicht drauf warum <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
<p>Hier noch etwas code der vielleicht helfen könnte :</p>
<pre><code class="language-cpp">void __fastcall TForm1::Button1Click(TObject *Sender)
{
 AnsiString progname = Edit1-&gt;Text;
 AnsiString text = Memo1-&gt;Lines-&gt;Text;
 dazu = 0;
 int* pos=new int[text.Length()];
 for(int i=1;i&lt;=text.Length();i++)
 {
  int puffer = static_cast&lt;char&gt;(text[i]);
  if((puffer&gt;=65)&amp;&amp;(puffer&lt;=90)){
   pos[dazu]=i;
   dazu++;
  }
 }
 text = UpperCase(text);
 DWORD SendDataTo(TCHAR* iWndName, TCHAR* iData,int hinzu,int* pos=new int[dazu]);
 SendDataTo(progname.c_str(), text.c_str(), dazu, pos);
}
//---------------------------------------------------------------------------

DWORD SendDataTo(TCHAR* iWndName,TCHAR* iData,int hinzu,int* pos)
{
 if(iWndName==NULL||iData==NULL) return -1L;

 if(strlen(iWndName)==0||strlen(iData)==0)return -2L;

 //Fenster wird gesucht
 HWND myHWND = ::FindWindow(NULL,iWndName);
 if(myHWND==NULL) return GetLastError();

 if(!SetForegroundWindow(myHWND)) return GetLastError();

 int textlen = strlen(iData);        //Anzahl der Zeichen
 UINT Len = (textlen*2)+(hinzu*2)+2; //Alle Tasten drücken/loslassen +
                                     //Shift drücken/loslassen + Enter drücken/loslassen
 INPUT* input= new INPUT[Len];
 int i = 0;
 int u = 0;                          
 int o = 0;
 while(i &lt; (Len-2)) {
  if((pos[o]-1)==u) { //-----------------------Bei großen Buchstaben-------------------
   input[i].type=INPUT_KEYBOARD;  //-----------Shift drücken--------
   input[i].ki.wVk = VK_RSHIFT;
   input[i].ki.wScan = 0;
   input[i].ki.dwFlags = 0;
   input[i].ki.dwExtraInfo = 0;
   i++;
   input[i].type=INPUT_KEYBOARD; //-----------Buchstabe drücken--------
   input[i].ki.wVk = iData[u];
   input[i].ki.wScan = 0;
   input[i].ki.dwFlags = 0;
   input[i].ki.dwExtraInfo = 0;
   i++;
   input[i].type=INPUT_KEYBOARD; //-----------Buchstabe loslassen--------
   input[i].ki.wVk = iData[u];
   input[i].ki.wScan = 0;
   input[i].ki.dwFlags = KEYEVENTF_KEYUP;
   input[i].ki.dwExtraInfo = 0;
   i++;
   input[i].type=INPUT_KEYBOARD;  //-----------Shift loslassen--------
   input[i].ki.wVk = VK_RSHIFT;
   input[i].ki.wScan = 0;
   input[i].ki.dwFlags = KEYEVENTF_KEYUP;
   input[i].ki.dwExtraInfo = 0;
   i++;
   u++;
   o++;
  }
  else { //-----------------------Bei kleinen Buchstaben-------------------
   input[i].type=INPUT_KEYBOARD;  //-----------Buchstabe drücken--------
   input[i].ki.wVk = iData[u];
   input[i].ki.wScan = 0;
   input[i].ki.dwFlags = 0;
   input[i].ki.dwExtraInfo = 0;
   //----------Taste loslassen :---------
   i++;
   input[i].type=INPUT_KEYBOARD; //-----------Buchstabe loslassen--------
   input[i].ki.wVk = iData[u];
   input[i].ki.wScan = 0;
   input[i].ki.dwFlags = KEYEVENTF_KEYUP;
   input[i].ki.dwExtraInfo = 0;
   i++;
   u++;
  }
 }
 input[i].type=INPUT_KEYBOARD;  //-----------Enter drücken--------
 input[i].ki.wVk = VK_RETURN;
 input[i].ki.wScan = 0;
 input[i].ki.dwFlags = 0;
 input[i].ki.dwExtraInfo = 0;
 i++;
 input[i].type=INPUT_KEYBOARD; //-----------Enter loslassen--------
 input[i].ki.wVk = VK_RETURN;
 input[i].ki.wScan = 0;
 input[i].ki.dwFlags = KEYEVENTF_KEYUP;
 input[i].ki.dwExtraInfo = 0;

 int cbSize = sizeof(INPUT);

 //--------TEST-------- (was steht kurz vorm senden alles in &quot;input&quot;
 char *test = new char[Len];
 for(int u=0;u&lt;=(Len);u++)
 {
  test[u]=input[u].ki.wVk; //nun kann bei EinzelAnweisungen nachgeschaut
 }                         //werden was in &quot;test&quot; (einem Abbild von &quot;input&quot;) steht
 //--------TEST--------

 UINT len= SendInput(Len,input,cbSize);  //Hier wird nun gesendet

 DWORD ErrCode(0);
 if(len &lt; Len) {
  ErrCode = GetLastError();
 }

 if(input) {
  delete[] input;
 }

 return ErrCode;
}
</code></pre>
<p>Im großen und ganzen wird der Text eingelesen und wenn es ein Großbuchstabe ist wird ein Shift druckt mit &quot;simuliert&quot; und dann erst der eigentliche Tastendruck simuliert und ansonsten nur der eigentliche Tastendruck...<br />
Bitte helft mir ich weiß echt nicht mehr weiter <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
<p>Gruß PillathMrNight</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1208520</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1208520</guid><dc:creator><![CDATA[~PillathMrNight]]></dc:creator><pubDate>Fri, 12 Jan 2007 09:52:30 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit SendInput on Fri, 12 Jan 2007 11:58:51 GMT]]></title><description><![CDATA[<p>Hallo</p>
<pre><code class="language-cpp">if((puffer&gt;=65)&amp;&amp;(puffer&lt;=90)){
</code></pre>
<p>Mfg<br />
Klaus</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1208642</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1208642</guid><dc:creator><![CDATA[KlausB]]></dc:creator><pubDate>Fri, 12 Jan 2007 11:58:51 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit SendInput on Fri, 12 Jan 2007 13:22:22 GMT]]></title><description><![CDATA[<p>Hi Klaus,<br />
Danke für deine Antwort aber mit dieser Zeile filtere ich nur die Großbuchstaben raus und makiere dannach ihre position im text um vor jedem dieser Buchstaben einen Druck der Shift Taste zu erzeugen, damit der Buchstabe auch nach dem Senden groß geschrieben wird.</p>
<p>Ich bruache dringend eine Antwort . Es wird sich doch irgendwer mit SendInput beschäftigt haben ... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
<p>Gruß PillathMrNight</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1208708</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1208708</guid><dc:creator><![CDATA[~PillathMrNight]]></dc:creator><pubDate>Fri, 12 Jan 2007 13:22:22 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit SendInput on Fri, 12 Jan 2007 13:40:31 GMT]]></title><description><![CDATA[<p>Du solltest dich mal mit virtuellen Tasten (Virtual Keys) beschäftigen.<br />
Dann verstehst du vielleicht den groben Denkfehler in deinem Programm!!!</p>
<p>Bei &quot;ki.wVk&quot; wird ein &quot;Virtual Key&quot; erwartet, kein ASCII-Code!!!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1208732</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1208732</guid><dc:creator><![CDATA[Th]]></dc:creator><pubDate>Fri, 12 Jan 2007 13:40:31 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit SendInput on Mon, 15 Jan 2007 13:22:55 GMT]]></title><description><![CDATA[<p>Vielen Dank Th es funktioniert nun.<br />
Wirklich grober Denkfehler <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
<p>Gruß PillathMrNight</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1210242</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1210242</guid><dc:creator><![CDATA[~PillathMrNight]]></dc:creator><pubDate>Mon, 15 Jan 2007 13:22:55 GMT</pubDate></item></channel></rss>