Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » Öffnen von Files abfangen

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
18.09.2003, 12:48 Uhr
~TheBruth
Gast


Hallo!

Ich suche eine Möglichkeit zu checken, ob gerade eine Datei von einem Programm geöffnet wird. Wenn also z.B. Winamp einen mp3-File öffnet, möchte ich das mitloggen. Gibt es da eine Möglichkeit? Am besten wäre ANSI-C++ also keine MFC-Klassen...

Vielen Dank im Vorraus und Gruß,

TheBruth
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
18.09.2003, 12:51 Uhr
virtual
Sexiest Bit alive
(Operator)


Geht nicht mit ANSI C++.
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
18.09.2003, 12:59 Uhr
ao

(Operator)


Aber zwischen ANSI und MFC gibts noch Win32. Darf ich dich mal dahin verschieben? Halt dich fest!



ao

Dieser Post wurde am 18.09.2003 um 13:01 Uhr von ao editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
18.09.2003, 13:14 Uhr
~TheBruth
Gast


Ja, ich bin inzwischen auch zu der Ansicht gekommen, dass es nicht in reinem ANSI geht. Eine Möglichkeit wäre wohl, die Recent Files einzulesen, aber das ist irgendwie nicht das wahre... Bin wirklich dankbar für Ratschläge
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
18.09.2003, 18:44 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


Du kannst einen ShellHook mit deinem Programm erzeugen (geht mit WinAPI) welches dann benachrichtigt wird sobald irgendwas geöffnet bzw gestartet wird usw. (Wenn Winamp natürlich vor deinem Programm läuft kriegt es nix mit)

Für ein Beispiel für Hooks siehe Downloads
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
19.09.2003, 11:08 Uhr
~TheBRuth
Gast


Das mit dem ShellHook scheint nicht so einfach zu sein... Ich hab mal folgenden Code gemacht:


C++:
dwChangeHandles[0] = FindFirstChangeNotification(
    "C: \\stuff",                        // directory to watch
    true,                                // watch subtrees
    FILE_NOTIFY_CHANGE_LAST_ACCESS);

if (dwChangeHandles[0] == INVALID_HANDLE_VALUE)
    ExitProcess(GetLastError());



Dann eine Schleife, in der ich die Results abfrage:


C++:
...
dwWaitStatus = WaitForMultipleObjects(2, dwChangeHandles, FALSE, INFINITE);
    
    switch (dwWaitStatus)
    {
        case WAIT_OBJECT_0:
...



Dann kommt eine Funktion zum schreiben des File-Infos in eine Datei.

C++:
...
if(dwChangeHandles[0] != INVALID_HANDLE_VALUE)
               {
                   DWORD dwFileSize;
                   LPSTR pszFileText;
                   dwFileSize = GetFileSize(dwChangeHandles[0], NULL);
                   if(dwFileSize != 0xFFFFFFFF)
                   {        
                            pszFileText = (LPSTR)GlobalAlloc(GPTR, dwFileSize + 1);
                            if(pszFileText != NULL)
                            {  
                                  DWORD dwRead;
                                  //if(ReadFile(dwChangeHandles[0], pszFileText, dwFileSize, &dwRead, NULL))
                                  //{
                                  ReadFile(dwChangeHandles[0], pszFileText, dwFileSize, &dwRead, NULL);
                                  pszFileText[dwFileSize] =0;                                  
                                  printf(pszFileText);
                                 // }
                                                                              
                            }
                    }

               }
...



Das Problem ist, das pszFileText immer leer ist... Außerdem scheint das Flag "FILE_NOTIFY_CHANGE_LAST_ACCESS" nicht richtig zu funktionieren...

Dieser Post wurde am 19.09.2003 um 17:07 Uhr von FloSoft editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
19.09.2003, 17:09 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


seltsam, FILE_NOTIFY_CHANGE_LAST_ACCESS steht gar nicht in der MSDN, da gibts unter anderem FILE_NOTIFY_CHANGE_LAST_WRITE, aber ich denke das wird nicht das sein was du suchst
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: