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 dll

    oh 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 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.


Anmelden zum Antworten