<?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[ReadDirectoryChangesW]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich brauche dringend hilfe bei der Funktion ReadDirectoryChangesW</p>
<p>Folgende Situation:</p>
<p>- ich will ein Verzeichnis ständig auf neue Dateien überwachen<br />
- wenn eine neue Datei gefunden wurde, brauche ich den Dateinamen der neuen<br />
Datei</p>
<p>Das ganze soll auch noch in einem Thread ablaufen. Mein Code bisher:</p>
<pre><code>void __fastcall DirectoryWatch::Execute()
{
   HANDLE hDir;
   FILE_NOTIFY_INFORMATION fInfo;
   LPVOID lpBuffer = &amp;fInfo;
   LPDWORD bytesReturned;

   hDir = CreateFile (
      &quot;D:\\Kremer&quot;,
      GENERIC_READ,
      FILE_LIST_DIRECTORY,
      NULL,
      OPEN_EXISTING,
      FILE_FLAG_BACKUP_SEMANTICS,
      NULL);

   if (ReadDirectoryChangesW(hDir, lpBuffer, sizeof(lpBuffer), FALSE, FILE_NOTIFY_CHANGE_FILE_NAME, bytesReturned, NULL, NULL))
   {
        MessageDlg(&quot;test&quot;, mtInformation, TMsgDlgButtons() &lt;&lt; mbOK, 0);
   }

}
</code></pre>
<p>Problem im Moment ist das die Funktion nicht zurückkommt, d.h. der Thread bleibt an der Stelle wo die Funktion aufgerufen wird stehen, auch wenn neue Dateien hinzukommen!<br />
Mache ich grundsätzlich etwas falsch?</p>
<p>Vielen Dank schon mal für Eure Hilfe</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/85192/readdirectorychangesw</link><generator>RSS for Node</generator><lastBuildDate>Thu, 16 Apr 2026 07:33:34 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/85192.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 06 Sep 2004 14:45:00 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to ReadDirectoryChangesW on Mon, 06 Sep 2004 14:45:00 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich brauche dringend hilfe bei der Funktion ReadDirectoryChangesW</p>
<p>Folgende Situation:</p>
<p>- ich will ein Verzeichnis ständig auf neue Dateien überwachen<br />
- wenn eine neue Datei gefunden wurde, brauche ich den Dateinamen der neuen<br />
Datei</p>
<p>Das ganze soll auch noch in einem Thread ablaufen. Mein Code bisher:</p>
<pre><code>void __fastcall DirectoryWatch::Execute()
{
   HANDLE hDir;
   FILE_NOTIFY_INFORMATION fInfo;
   LPVOID lpBuffer = &amp;fInfo;
   LPDWORD bytesReturned;

   hDir = CreateFile (
      &quot;D:\\Kremer&quot;,
      GENERIC_READ,
      FILE_LIST_DIRECTORY,
      NULL,
      OPEN_EXISTING,
      FILE_FLAG_BACKUP_SEMANTICS,
      NULL);

   if (ReadDirectoryChangesW(hDir, lpBuffer, sizeof(lpBuffer), FALSE, FILE_NOTIFY_CHANGE_FILE_NAME, bytesReturned, NULL, NULL))
   {
        MessageDlg(&quot;test&quot;, mtInformation, TMsgDlgButtons() &lt;&lt; mbOK, 0);
   }

}
</code></pre>
<p>Problem im Moment ist das die Funktion nicht zurückkommt, d.h. der Thread bleibt an der Stelle wo die Funktion aufgerufen wird stehen, auch wenn neue Dateien hinzukommen!<br />
Mache ich grundsätzlich etwas falsch?</p>
<p>Vielen Dank schon mal für Eure Hilfe</p>
]]></description><link>https://www.c-plusplus.net/forum/post/600812</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/600812</guid><dc:creator><![CDATA[BJMicha]]></dc:creator><pubDate>Mon, 06 Sep 2004 14:45:00 GMT</pubDate></item><item><title><![CDATA[Reply to ReadDirectoryChangesW on Mon, 06 Sep 2004 20:05:19 GMT]]></title><description><![CDATA[<p>Versuch es mal so (im Umgang mit Pointern scheinst du nicht ganz vertraut zu sein <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /> ):</p>
<pre><code class="language-cpp">HANDLE hDir;
FILE_NOTIFY_INFORMATION fInfo;
DWORD bytesReturned;

hDir = CreateFile (
      &quot;D:\\Kremer&quot;,
      FILE_LIST_DIRECTORY,
      FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE,
      NULL,
      OPEN_EXISTING,
      FILE_FLAG_BACKUP_SEMANTICS,
      NULL);

if (ReadDirectoryChangesW(hDir, &amp;fInfo, sizeof(fInfo), FALSE, FILE_NOTIFY_CHANGE_FILE_NAME, &amp;bytesReturned, NULL, NULL))
{
    MessageDlg(&quot;test&quot;, mtInformation, TMsgDlgButtons() &lt;&lt; mbOK, 0);
}
</code></pre>
<p>Ist allerdings nicht getestet - Fehler sind also nicht ausgeschlossen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f576.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--sunglasses"
      title=":sunglasses:"
      alt="🕶"
    /></p>
<p>Ansonsten: <a href="http://www.codetools.com/file/FileSpyArticle.asp" rel="nofollow">Spying a file system - Files and Folders</a> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/601102</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/601102</guid><dc:creator><![CDATA[flenders]]></dc:creator><pubDate>Mon, 06 Sep 2004 20:05:19 GMT</pubDate></item><item><title><![CDATA[Reply to ReadDirectoryChangesW on Tue, 07 Sep 2004 05:42:57 GMT]]></title><description><![CDATA[<p>Danke, die Funktion klappt jetzt zumindest schon mal so halb!<br />
Sie erkennt wenn eine Änderung in dem Verzeichnis ist!</p>
<p>Ich habe aber noch Probs an den Dateinamen zu kommen! In der <strong>fInfo</strong> Struktur stehen keine Infomationen drin <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>
]]></description><link>https://www.c-plusplus.net/forum/post/601234</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/601234</guid><dc:creator><![CDATA[BJMicha]]></dc:creator><pubDate>Tue, 07 Sep 2004 05:42:57 GMT</pubDate></item><item><title><![CDATA[Reply to ReadDirectoryChangesW on Tue, 07 Sep 2004 07:36:17 GMT]]></title><description><![CDATA[<p>Ich habe mir gerade mal die FILE_NOTIFY_INFORMATION-Struktur angeschaut und bemerkt, dass dort nur WCHAR FileName[1]; bereits enthalten ist - du musst also einen größeren Speicher reservieren und dann nachher entsprechend casten.</p>
<pre><code class="language-cpp">HANDLE hDir = CreateFile(
      &quot;D:\\Kremer&quot;, 
      FILE_LIST_DIRECTORY, 
      FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE, 
      NULL, 
      OPEN_EXISTING, 
      FILE_FLAG_BACKUP_SEMANTICS, 
      NULL); 

DWORD bufSize = sizeof(FILE_NOTIFY_INFORMATION)+MAX_PATH*sizeof(WCHAR);
char *fInfo = new char[bufSize];
ZeroMemory(fInfo,bufSize);
DWORD bytesReturned; 

if (ReadDirectoryChangesW(hDir, fInfo, bufSize, FALSE, FILE_NOTIFY_CHANGE_FILE_NAME, &amp;bytesReturned, NULL, NULL))
{
    MessageDlg(&quot;test&quot;, mtInformation, TMsgDlgButtons() &lt;&lt; mbOK, 0);
    MessageBoxW(NULL,((FILE_NOTIFY_INFORMATION *)fInfo)-&gt;FileName,L&quot;&quot;,0);
}
</code></pre>
<p>Ich bin mir nicht ganz sicher, ob das so funktioniert - einfach mal testen und berichten <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
<p>edit: Habe es jetzt doch getestet, und damit keine Verwirrung entsteht nochmal den ganzen Code gepostet. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/601294</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/601294</guid><dc:creator><![CDATA[flenders]]></dc:creator><pubDate>Tue, 07 Sep 2004 07:36:17 GMT</pubDate></item><item><title><![CDATA[Reply to ReadDirectoryChangesW on Tue, 07 Sep 2004 09:50:40 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>vielen Dank für Deine Hilfe!</p>
<p>Ja, mit Zeigern hab ich es nicht so. Habe bis vor kurzem nur Java programmiert, und muss mich jetzt in C++ einarbeiten!</p>
<p>Auf jeden Fall läuft es jetzt!</p>
<p>Thx</p>
]]></description><link>https://www.c-plusplus.net/forum/post/601410</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/601410</guid><dc:creator><![CDATA[BJMicha]]></dc:creator><pubDate>Tue, 07 Sep 2004 09:50:40 GMT</pubDate></item></channel></rss>