Zum Inhalt springen

Klotzkopp

Mitglieder
  • Gesamte Inhalte

    9912
  • Benutzer seit

  • Letzter Besuch

  • Tagessiege

    3

Alle Inhalte von Klotzkopp

  1. Oder schau mal ins Ereignisprotokoll: Neuer Task: eventvwr
  2. Drück mal während der Ausführung Alt+Enter und ändere dann die Einstellungen von Vollbild auf Fenster.
  3. In string.h werden keine String-Datentypen deklariert, deswegen gehe ich mal davon aus, dass du einen normalen C-String, also einen char* meinst. Da gibt es prinzipiell keine Beschränkung, die können so groß werden wie dein gesamter Hauptspeicher. Allerdings werden Probleme auftreten, wenn die Länge den Wertebereich eines size_t übersteigt. Auf 32-Bit-Systemen wären das 4 GByte. Es macht aber nicht viel Sinn, große Datenmengen in einem char-Array abzulegen. Was hast du denn vor?
  4. Hättest du die Suchfunktion benutzt, wärest du u.a. auf diesen Thread gestoßen: http://fachinformatiker-world.de/forums/showthread.php?s=&threadid=17707 Wenn noch weitere Fragen auftreten, hänge dich bitte an diesen Thread. Den hier mache ich zu, damit die Informationen gebündelt werden.
  5. Ich würde es nett finden, wenn du die absichtlichen Rechtschreibfehler unterlassen und ernsthafte Fragen stellen würdest. Die Fachforen sind nicht zum Rumblödeln gedacht.
  6. Für die Windows-API praktisch das Standardwerk: Petzold: Windows-Programmierung
  7. Da wird dein Ansatz daran scheitern, dass ein int keine beliebig lange Zahl aufnehmen kann. Ich würde die Eingabe als string speichern (std::getline) und dann einfach die letzten zwei (oder drei) Zeichen auswerten.
  8. Hast du die Funktion als extern "C" deklariert? Wenn nicht, wird der Name dekoriert. Das kannst du dir mit Depends ansehen. Versuchs mal mit einem Hook für WH_MOUSE_LL, das müsste gehen. Entweder das, oder SetWindowsHookEx gleich in der DLL ausführen.
  9. Sind irgendwelche "besonderen" Steuerelemente auf dem Dialog? RichEdit oder ActiveX vielleicht?
  10. Abgesehen davon, dass du die Flags mit | kombinieren könntest, was spricht denn gegen resetiosflags( deinstream.flags() ) ?
  11. --> Verschoben nach: Windows Betriebssysteme
  12. Machst du jedes SelectObject wieder rückgängig? Wendest Du DeleteObject für jedes mit CreateXXX erzeugt Objekt an, wenn du es nicht mehr brauchst?
  13. PCWPSTRUCT pcwp = reinterpret_cast<PCWPSTRUCT>( lParam ); if( pcwp->message == WM_LBUTTONDOWN ... Wenn du einen globalen Hook für WH_CALLWNDPROC einrichtest, ruft die WndProc eines jeden Prozesses deinen Hook auf. Was passiert, wenn dazu ein Funktionszeiger benutzt wird, der nur im Adressraum deines Prozesses gültig ist, kannst du dir ausmalen: Jeder Prozess mit einer WndProc, außer deinem, schmiert mit einer Schutzverletzung ab. Im günstigsten Fall. Wenn der Code aber in einer DLL steht, deren Instance-Handle du ja angibst, kann jeder Prozess auf die Adresse zugreifen. Noch was: Am Ende deiner HookProc musst du CallNextHookEx aufrufen, und den Rückgabewert zurückgeben. Sonst kommen andere, vorher eingerichtete Hooks nicht mehr zum Zuge.
  14. Erstens ist die Signatur deiner HookProc falsch. HookProcs sind LRESULT CALLBACK HookProc(int, WPARAM, LPARAM); Dann ist auch der Cast nicht mehr notwendig. Zweitens müssen globale Hooks in DLLs stehen, denn die anderen Prozesse kommen sonst nicht an den Code.
  15. Schau mal in diesen Thread, da hatten wir die Grundlagen schon mal behandelt. Wenn noch weitere Fragen auftreten, hänge dich bitte an diesen Thread, dann werden die Information besser gebündelt. Hier mache ich dicht.
  16. Auf welche Aussage von Guybrush Threepwood beziehst du das? Soweit ich das sehe, hat er nichts falsches gesagt. Exportierst du denn überhaupt die Klasse xyDlg oder die Methode getstr? Wo wird die Instanz von xyDlg erzeugt?
  17. Du kannst nichtstatische Member nur aufrufen, wenn Du in der Exe eine Instanz von xyDlg (oder einen Zeiger darauf) hast.
  18. 1. Treiber schreibt man für Hardwarekomponenten, nicht für Verbindungsstandards oder Protokolle. Du solltest also schon sagen, um was für eine Hardware es sich handelt. Oder brauchst du nur einen High-Level-Treiber, der auf einem bestehenden Low-Level-Treiber aufsetzt? Dann solltest du sagen, um was für einen Low-Level-Treiber es sich handelt. 2. Windows-Treiber werden üblicherweise in C geschrieben. Die Implementierungsdetails hängen aber stark vom Betriebssystem ab. Ein Treiber für Windows XP wird nicht unter NT oder 95 laufen. Also solltest du auch sagen, für welches Windows der Treiber sein soll. 3. Treiber können "typische" Aufgaben erfüllen, oder speziell auf die Hardware zugeschnitten sein. Willst du z.B. einen vollständigen NDIS-Treiber, so dass du ein Netzwerk darüber laufen lassen kannst? Was soll der Treiber können? 4. Treiberprogrammierung ist (zumindest unter Windows, unter anderen BSen habe ich da keine Erfahrung), alles, nur nicht "einfach". Bist du in der Lage, aus dem Sourcecode einen Treiber zu kompilieren, sprich: hast du das DDK für dein Windows?
  19. Meinst du eine Funktion, die aus "abcd" "61626364" macht? Das könntest du z.B. so machen: #include <string> #include <sstream> #include <iomanip> using namespace std; string hexdump( const string& s ) { stringstream ss; string::size_type len = s.length(); ss.flags( ios::hex ); for( string::size_type i=0; i<len; ++i ) { ss << setw(2) << setfill('0') << static_cast<unsigned int>(s[i]); } return ss.str(); }[/CODE]
  20. Also, das mit einem Instanzzeiger geht nicht, weiß auch nicht, wie ich darauf gekommen bin. Aber mit einem Funktionszeiger gehts: In der EXE: void do_init_benutzer() { CNameApp name name.init_benutzer(); } // irgendwo am Anfang: // der DLL den Funktionszeiger übergeben. set_do_init_benutzer( do_init_benutzer ); In der DLL: // Funktionszeiger void(*fp_init_benutzer)(void); // exportierte Funktion zum Setzen des Funktionszeigers void __declspec(dllexport) set_do_init_benutzer_fp( void(*fp)(void) ) { fp_init_benutzer = fp; } Dann kannst du in der DLL mit fp_init_benutzer(); die Funktion in der EXE aufrufen.
  21. Das funktioniert so nicht, weil der Linker nicht weiß, wo in der Exe-Datei der Einsprungpunkt für diese Klasse/Funktion ist. Das lässt sich auch nicht zur Laufzeit auflösen. Das geht nur bei Aufrufen von EXE nach DLL. Außerdem ist es schlechtes Design, eine DLL von einer EXE abhängig zu machen. Das widerspricht ja der Absicht, die hinter DLLs steht. Du könntest aber in der DLL eine Funktion exportieren, mit der du einen Zeiger auf eine CNameApp-Instanz oder einen Funktionszeiger angeben kannst.
  22. Wenn es dich nicht stört, dass sich dabei die Selektierung ändert, könntest du das so machen: int nItem = m_Log.AddString( deintext ); m_Log.SetCurSel( nItem ); m_Log.SetCurSel( -1 );
  23. http://de3.php.net/manual/en/function.microtime.php
  24. Sag doch einfach mal genau, was du mit "kommamäßig trennen" meinst. Die Zahl, die du da hast, hat keine Nachkommastellen, und wenn du sie mit 1000 multiplizierst, bleibt das so. Was soll denn hinterher da stehen?
  25. Schau doch mal hier rein. Gibt's sogar auf deutsch.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...