Hi,
@GraveCH. Also wie muss ich das in meinen Quellcode genau einsetzen?
Wenn dir jemand den richtigen Funktionsnamen gibt, versteht es sich von selbst, danach in der MSDN zu suchen, somit weist du auch wie sie einzusetzen ist.
Eine gute Alternative bietet dazu jedoch (wie gesagt) die Improved Console. Dort steht auch der Code, falls du nicht weist wie es gehen soll
MfG, mikeý.
DieNeueApotheke schrieb:
Er liest die Daten bis zum ersten Zeilumbruch und hört dann auf. Leider kenne ich C++ nicht, nur PHP, obwohl die Funktionen relativ gleich sind.
Einfachste Lösung ist eine Schleife:
char daten[1000];
FILE* eingabe = fopen("Quelle.txt","r");
FILE* ausgabe = fopen("Ziel.txt","w");
while(!feof(eingabe))
{
int count=fread(daten,1,1000,eingabe);
fwrite(daten,1,count,ausgabe);
}
Außer fgets...gibt es auch noch eine andere Funktion wie "fread" um Daten zu lesen?
Ja, genau das von dir genannte fread()
(und in C++ gibt es auch noch fstreams, die imho einfacher zu verwenden sind als FILE's (FILE ist ein Erbe aus C-Zeiten))
GaDgeT schrieb:
Angenommen zu diesem Gerät gibt es einen Treiber der ins System eingebunden wird. Wie kann ich da das Gerät mit C++ ansprechen?
treiber haben schnittstellen mit denen man geräte eines bestimmten typs steuern kann, die werden in's system eingeklinkt. das betriebssystem (windoofs z.b.) bietet für anwendungen allgemeinere schnittstellen (z.b. CreateFile, ReadFile, DeviceIOControl usw.) um dieses gerät und andere geräte zu anzusprechen.
GaDgeT schrieb:
Angenommen das Gerät wird nicht durch einen Treiber ins System eingebunden. Kann ich dann trotzdem mit C++ darauf zugreifen?
ja, entweder du codest 'nen treiber selber (der sich ins system hängt und daher im kernel-modus läuft) oder du greifst aus'm user-mode auf das gerät zu (geht mit undokumentierten trick oder 'giveio'-treiber).
GaDgeT schrieb:
Wie Hardwarenahe ist C++?
geht so. treiber coden geht jedenfalls damit, obwohl unter treiberentwicklern c++ nicht so beliebt ist (die nehmen lieber C oder assembler)...
GaDgeT schrieb:
Was genau versteht man unter einem Treiber? Ist das eine einfache *.ini Datei?
nee, das ist eine sammlung von funktionen (ausführbarer code) um eine bestimmte hardware anzusteuern. eine ini-datei ist ja nur eine textdatei z.b. mit konfigurationsdaten usw, also kein treiber.
msdn library haets auch getan, arbeite einfach die Links der reinfolge nach ab, und du solltest das hinbekommen, und zwar hin hoechtens 51 zeilen.
http://msdn2.microsoft.com/en-us/library/ms644959.aspx
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/windowing/hooks/hookreference/hookfunctions/setwindowshookex.asp
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/windowing/hooks/hookreference/hookfunctions/lowlevelkeyboardproc.asp
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/windowing/hooks/hookreference/hookstructures/kbdllhookstruct.asp
Wenn diese Funktion funktioniert, programmierst du übrigens nicht in der DOS-Box sondern in der Win32-Konsole!
Sie ist im Prinzip nur ein Wrapper für die Win32-API-Funktion SetConsoleCursorPosition(). Genauere Details gibts - wie bereits erwähnt - in der MSDN.
MfG SideWinder
Die einfachste Lösung wäre es, beide Teile zu einem Programm zusammenzufassen. Dann läuft jedes Teilprogramm in einem eigenständigen Thread und sie können (relativ) problemlos miteinander kommunizieren.
(eine Alternative wäre es, eine Pipe zu öffnen, der von deinem Programm als Aus- und von deinem Kollegen als Eingabe genutzt wird)
Trotzdem wird da das Fenster kurz aufflackern oder?
Jop, tut es weil im Gegensatz zu einer Fensteranwendung die Fensterklasse der Konsole zuerst vollständig registriert und danach angezeigt wird. Erst dann liegt es in der Macht des Programmierers, nachträglich das Fenster wieder verschwinden zu lassen. (Im Gegensatz zu einer selbst programmierten Windowsanwendung, hier kann man ein Fenster nach Belieben anzeigen lassen).
Edit: 7 mal editiert, weil ich gerade selber probiert habe, ob das mit dem system - Zeugs funzt, und hab ständig was reingeschrieben, was dann aber im Endeffekt doch nicht gestimmt hat ^^
Gruß,
mikey.
Kennst du ein gutes tutorial für eine graphische Umsetzung des Programms?
Explizit für dein Programm gibt es das natürlich nicht.
Aber auf www.cpp-world.de, unter 'Tutorials' findest du ein paar gute Links zu WinAPI Tutorials (vorausgesetzt, du möchtest das mit der WinAPI lösen). Ich habe sie auch selber getestet, also ich kann sie nur empfehlen
MfG, mikey.
Hi,
Welches Abbruchkreterieum muss ich eingeben?
Du willst das also mit der WinAPI lösen, glaube ich mal oder ? Die Abbruchkriterien können je nach Programm, das du attakierst unterschiedlich sein, ich kann und will dir dazu auch keine Antwort geben. Such doch einfach mal bei google nach bestimmten Stichwörtern wie "Brute Force Source Code" etc. Oder melde dich am besten in einem Cracker - Forum an, dort werden deine Fragen bestimmt besser beantwortet.
Ich muss zugeben, an sich eine wirklich interessante Frage, aber es wird schon seinen Grund haben, warum dir keiner eine konkrete Antwort liefert
MfG, mikey.
Dieser Thread wurde von Moderator/in junix aus dem Forum VCL/CLX (Borland C++ Builder) in das Forum DOS und Win32-Konsole verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?
Dieses Posting wurde automatisch erzeugt.
jo danke dir habs schon geckeckt
hab nun laut buch das datei handle erstellt,
mit der hoffnung das eine Datei namens MyDevice nun in diesem Verzeichnis auftaucht
jedoch ist das nicht geschehen..
hier ist der betreffende Code:
const WCHAR deviceNameBuffer[] = L"C:\\WINDOWS\\system\\MyDevice";
PDEVICE_OBJECT g_Device;
UNICODE_STRING deviceNameUnicodeString;
RtlInitUnicodeString (&deviceNameUnicodeString, deviceNameBuffer );
theDriverObject->DriverUnload = OnUnload;
ntStatus = IoCreateDevice (theDriverObject, 0, &deviceNameUnicodeString, 0x00001234, 0, TRUE, &g_Device );
kann mir jemand sagen warum diese Datei nicht im Verzeichnis zu finden ist
nach dem ich den Treiber gestartet habe