Batch Funktion Als C Schreiben
-
hallo, ich will eine Batch Funktion als C Schreiben damit ich nicht mit der Batch ein mit C geschriebens Programm Aufrufen muss.
also Praktisch aus *.bat + *.exe eine einzelne *.exe machen
Mein Kenntnisstand: 15 von 100 Punken (Anfänger mit den ersten Programm erfahrungen)
OS: Windows XP Pro SP3
IDE: Dev-C++die Batch lautet so
ECHO OFF for /F %%i in (coin.ini) do set var=%%i echo %var% set /a var += 1 echo %var% > coin.ini start /min mplay32.exe /play /close "C:\coin\cd.mp3" start lpt1pin12.exe exit
in der coin.ini ist ein wert von 0-99 je nach dem
die Funkrion der Batch ist folgende
öffne coin.ini und den Inhalt als Variabele setzen,
die Variabele + 1 und als coin.ini wieder Speichern.
dann eine sound Datei wiedergeben und danach die lpt1pin12.exe starten (die eine Relais Karte Ansteuert).so weit bin ich mit der C datei
#include <stdio.h> #include <windows.h> int main(){ FILE *coin_datei = fopen( "coin.ini", "r+b" ); int coin, newcoin; if( !coin_datei ) printf( "Fehler beim Laden der Datei" ); while( !feof(coin_datei) ) fscanf( coin_datei, "%i", &coin ); printf( "%i", coin ); newcoin = coin + 1; fprintf( coin_datei, "%i", newcoin); fclose(coin_datei); return 1; }
aber anstatt aus ner 1 ne 2 zu machen schreibt es 12 und dann macht es aus der 12 eine 1213 usw. er hängt die Zahlen nur an.
wie lösche ich die zeile vor dem schreiben?
und wie lässt sich eine Sound Datei einbinden?Im Voraus mal danke, mfg LoZe
-
LoZe schrieb:
aber anstatt aus ner 1 ne 2 zu machen schreibt es 12 und dann macht es aus der 12 eine 1213 usw. er hängt die Zahlen nur an.
Er hängt die Zahlen nicht an, sondern schreibt sie nur. Wie wärs wenn du das newline-Zeichen \n schreibst, um eine neue Zeile zu starten?
LoZe schrieb:
wie lösche ich die zeile vor dem schreiben?
und wie lässt sich eine Sound Datei einbinden?Das geht nicht mit Standard C, dazu musst du platformabhängige Funktionen nutzen.
-
ich möchte in der coin.ini aber nur die Aktuelle Zahl drin Stehen haben keine Andere.
-
Und warum benutzt du nicht einfach die Batch-Datei?
-
steht im ersten Post
LoZe schrieb:
ich will eine Batch Funktion als C Schreiben damit ich nicht mit der Batch ein mit C geschriebens Programm Aufrufen muss.
zum Ansteuern Meiner Relais Karte Nehme ich C und ich finde es Übersichtlicher nur eine Datei zu haben als zwei.
vor allem da die Programme nicht nur einmal vorkommen sondern 4 mal in abgewandelter Version.
Momentan sind es also 4 Batch, 6 C, 3 Autoit v3, 3 Mp3 Files, 1 INI.
und ich hätte des eben gerne als 6 C + INI damit es ein wenig Übersichtlicher wird.
-
du kannst die Datei zweimal oeffnen.
Einmal im r-Modus zum Lesen des Wertes und dann wieder schließen
Danach nochmal im w-Modus ... damit sollte dann nichts angehaengt werden, sonder die Datei neu beschrieben werden.zum Abspielen von Sounds, ich red mal von Windows, gibts eine Reihe von Moeglichkeiten.
- PlaySound aber sehr eingeschraenkt bezueglich der Dateiformate
- msi-Funktionen siehe bei der msdn
- fmod als Bibliothek benötigt aber wieder dll
-
BasicMan01 schrieb:
du kannst die Datei zweimal oeffnen.
Einmal im r-Modus zum Lesen des Wertes und dann wieder schließen
Danach nochmal im w-Modus ... damit sollte dann nichts angehaengt werden, sonder die Datei neu beschrieben werden.zum Abspielen von Sounds, ich red mal von Windows, gibts eine Reihe von Moeglichkeiten.
- PlaySound aber sehr eingeschraenkt bezueglich der Dateiformate
- msi-Funktionen siehe bei der msdn
- fmod als Bibliothek benötigt aber wieder dlloh Super! des mit dem nochmaligen öffnen der Datei im w-Modus hat funktioniert!
des mit dem Sound werde ich Heute Abend mal testen.
-
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.
-
Dieses Forum ist der Hammer! Danke an "BasicMan01" habe den Sound auch hin bekommen mit folgendem Befehl.
mciSendString("open nocoin.mp3", NULL, 0, NULL); mciSendString("play nocoin.mp3 wait", NULL, 0, NULL); mciSendString("close nocoin.mp3", NULL, 0, NULL);
jetzt nur noch eine Funktion die ich von ner Batch her kenne und gern in C haben Würde
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
-
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 entsorgenDamit 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).aspxbzw 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.