Dieser Thread wurde von Moderator/in rüdiger aus dem Forum ANSI C 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.
Nein, bleib lieber gleich bei SendInput(), keybd_event() ist veraltet.
Das iEvents brauchst du nur, wenn du mehrere Events auf einmal versenden willst. Was alles in das INPUT Struct rein muss steht doch auch auf der verlinkten msdn Seite http://msdn.microsoft.com/en-us/library/ms646270%28v=VS.85%29.aspx.
taurus schrieb:
ich kram den thread nochmal raus... in der hoffnung jemand hat das selbe problem wie ich
gibt es da nicht ein allheilmittel?
z.b. frage ich daten aus einer mysql db aus... und da sind umlaute drin...
ich kann doch nicht hergehen und jeden umlaut durch entsprechende hex codes ersetzen o.ä. ?
Das ist normalerweise nicht nötig, es reicht, wenn du die Umgebung deines Programmes anpasst: Deutsche locale setzen, Codepage mit der mysql Codierung ableichen.
Gruß,
B.B.
LoZe schrieb:
tasklist|find
ich will eine if Anweisung die wahr wird wenn das Programm xxx.exe Läuft.
geht das? wenn ja kann ich die Batch Dateien endlich entsorgen
Damit bist du in der WinApi angekommen folgende Links könnten dafür hilfreich sein:
http://msdn.microsoft.com/en-us/library/ms682629(v=VS.85).aspx
http://msdn.microsoft.com/en-us/library/ms682631(v=VS.85).aspx
bzw das meiste was in der PSAPI beschrieben ist:
http://msdn.microsoft.com/en-us/library/ms684894(v=VS.85).aspx
Alle detailfragen wären dann wohl im WinApi forum besser aufgehoben.
Vielen Dank an "anonymus" und "f.-th." habe es hin Bekommen mit folgendem code geht es so wie ich mir es vorgestellt habe.
mfg LoZe
#include <stdio.h>
#include <conio.h>
#include <windows.h>
#define LPT1 0x378
#define Set1 0x01
typedef short (_stdcall *inpfuncPtr)(short portaddr);
typedef void (_stdcall *oupfuncPtr)(short portaddr, short datum);
int main(void)
{
HINSTANCE hLib;
inpfuncPtr inp32;
oupfuncPtr oup32;
short x;
int i, bitmask;
/* Load the library */
hLib = LoadLibrary("inpout32.dll");
if (hLib == NULL) {
printf("LoadLibrary Failed.\n");
return -1;
}
/* get the address of the function */
inp32 = (inpfuncPtr) GetProcAddress(hLib, "Inp32");
if (inp32 == NULL) {
printf("GetProcAddress for Inp32 Failed.\n");
return -1;
}
oup32 = (oupfuncPtr) GetProcAddress(hLib, "Out32");
if (oup32 == NULL) {
printf("GetProcAddress for Oup32 Failed.\n");
return -1;
}
int status = (inp32)(LPT1);
bitmask = status | Set1;
(oup32)(LPT1,bitmask);
Sleep(1000);
(oup32)(LPT1,status);
}
berniebutt schrieb:
Du machst da mit ANSI-C ein Konsolen-Programm. Was da auf dem Bildschirm erscheint, das bleibt einfach stehen.
Na, was für ein Glück, das man da nicht hinterherzulaufen braucht.
berniebutt schrieb:
Mache dich mit der Windows-Programmierung vertraut, dort geht so etwas einfach.
Der nicht ganz leichte Einstieg sei dir empfohlen. Dann kannst du unter WinApi jede Menge Hilfe bekommen.
Das da oben ist WinApi Code, eine Funktion aus der Sammlung der Console Functions http://msdn.microsoft.com/en-us/library/ms682073(VS.85).aspx. Das ist um einiges einfacher, als sich mit einem 'richtigen' Windowsprogramm ala WinMain rumzuärgern.
:):)
:):)
Gruß,
B.B.
du solltest Ausgabe und Logik trennen.
als nicht versuchen die Ausgab der Konsole als Level zu speichern sondern mach dir besser ein array
char level [80][20];
das du dann veränderst und am Ende abspeicherst.
also wenn du vorher zB hattest
gotoxy (x,y);
printf ("#"); //eine wand oder sonstwas
mach einfach
level [x][y] = '#';
zum level anzeigen machst du dann 2 verschachtelte Schleifen die das Level Zeichen für Zeichen anzeigen.
Oder in eine Datei schreiben.
Der einzige Unterschied zwischen level_anzeigen() und level_speichern() wäre dann
cout << level[x][y]; beim anzeigen und datei << level[x][y] beim speichern...
Bin möglicherweise sogar noch ein wenig älter, klebe genauso an alten Dingen, und es hat mir sehr weh getan als Shade mir eingehämmert hat das DOS tot! tot! tot! ist.
Wenn Du aber behutsam mit C anfangen willst, und mit nicht allzu viel modernem Overhead erschlagen werden willst, dann könnte Allegro ideal sein.
Dabei ist Allegro alles andere als out (auch wenn es ebenfalls noch aus dem letzten Jahrtausend kommt). Für die neue 5er-Version lassen sie sich sehr viel Zeit und wollen AllegroGL mit einbinden - und ein paar Python-Dinge habe ich da auch schon drin gesehen.
Wenn Du mal hängst und eine Frage hast, die ich hier in der Flut der Postings übersehe - normalerweise gibt es dann Leute, die mich in den Hintern treten, dass da noch was offen ist
Vielen Dank für eure Antworten. Nun ist das ganze verständlicher für mich.
Mein Grundlegendes Problem war, das ich zuerst ein Programm ohne jegliches Fenster haben und nach einiger Zeit eine Konsole aufrufen wollte. Ich habe folgendes versucht:
WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
void main()
{
}
return 0;
}
Das funktionierte natürlich nicht. Durch weiteres Suchen bin ich auf die Funktion AllocConsole() gestoßen, mit der man in der WinMain() eine Konsole aufrufen kann.
Mit freundlichen Grüßen,
DarkBug
Jeder Datentyp hat ein zugehöriges Formatzeichen, z.B. hat signed int das Zeichen %d,
double/float das Zeichen %f, usw.
http://www.cplusplus.com/reference/clibrary/cstdio/fprintf/