123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231 |
- #include "main.h"
- #include "Fenster.h"
- #include <tlhelp32.h>
- #include "Punkt.h"
- #include "Bildschirm.h"
- #include "TextFeld.h"
- #include "DateiSystem.h"
- #include "Text.h"
- #include "Fortschritt.h"
- #include "Schrift.h"
- #include "Datei.h"
- #include "Maus.h"
- #include "Globals.h"
- #include <tchar.h>
- using namespace Framework;
- Bildschirm *screen;
- TextFeld *output;
- FBalken *balken;
- bool exitB2 = 0;
- bool warten = 0;
- WFenster *fenster;
- void textOut( const char *txt )
- {
- output->zText()->anhängen( txt );
- if( output->zText()->anzahlVon( '\n' ) > 7 )
- output->zText()->löschen( 0, output->zText()->positionVon( '\n', output->zText()->anzahlVon( '\n' ) - 7 ) + 1 );
- screen->render();
- }
- void fensterSchließenME( WFenster *f )
- {
- textOut( "Vorgang wird beendet...\n" );
- exitB2 = 1;
- if( !warten )
- PostQuitMessage( 0 );
- };
- DWORD WINAPI übernehmen( void *args )
- {
- warten = 1;
- Datei *liste = new Datei();
- liste->setDatei( "data/update/unable/list.patch" );
- if( !liste->existiert() )
- {
- liste->release();
- DateiLöschen( new Text( "data/update/download" ) );
- balken->setAktionAnzahl( 1 );
- balken->aktionPlus( 1 );
- textOut( "Vorgang abgeschlossen\n" );
- warten = 0;
- StopNachrichtenSchleife( fenster->getFensterHandle() );
- return 0;
- }
- liste->öffnen( D_Style::lesen );
- int count = 0;
- Text *zeile = liste->leseZeile();
- while( zeile )
- {
- count++;
- zeile->release();
- zeile = liste->leseZeile();
- }
- liste->schließen();
- balken->setAktionAnzahl( count );
- for( int i = 0; i < count; i++ )
- {
- liste->öffnen( D_Style::lesen );
- zeile = liste->leseZeile();
- if( !zeile )
- break;
- char aktion = zeile->getText()[ 0 ];
- switch( aktion )
- {
- case 1: // Datei erstellen
- {
- Text *pfad = zeile->getTeilText( 1, zeile->getLänge() - 1 );
- textOut( "Erstelle: " );
- textOut( pfad->getText() );
- textOut( "\n" );
- DateiLöschen( pfad->getThis() );
- DateiPfadErstellen( pfad );
- }
- break;
- case 2: // Datei umbenennen
- {
- Text *pfad1 = zeile->getTeilText( 1, zeile->positionVon( "=>" ) );
- Text *pfad2 = zeile->getTeilText( zeile->positionVon( "=>" ) + 2, zeile->getLänge() - 1 );
- textOut( "Ersetze: " );
- textOut( pfad1->getText() );
- textOut( "\n" );
- DateiLöschen( pfad1->getThis() );
- DateiUmbenennen( pfad2, pfad1 );
- }
- break;
- case 3: // Datei löschen
- {
- Text *pfad = zeile->getTeilText( 1, zeile->getLänge() - 1 );
- textOut( "Lösche: " );
- textOut( pfad->getText() );
- textOut( "\n" );
- DateiLöschen( pfad->getThis() );
- }
- break;
- }
- Datei *liste2 = new Datei();
- liste2->setDatei( "data/update/unable/list.patch$" );
- liste2->öffnen( D_Style::schreiben );
- for( __int64 ii = liste->getLPosition(); ii < liste->getGröße(); ii++ )
- {
- char c = 0;
- liste->lese( &c, 1 );
- liste2->schreibe( &c, 1 );
- }
- liste->schließen();
- liste2->schließen();
- liste->löschen();
- liste2->umbenennen( "data/update/unable/list.patch" );
- liste2->release();
- balken->aktionPlus();
- if( exitB2 )
- {
- liste->release();
- warten = 0;
- StopNachrichtenSchleife( fenster->getFensterHandle() );
- return 0;
- }
- }
- liste->schließen();
- liste->release();
- DateiLöschen( new Text( "data/update/download" ) );
- DateiLöschen( new Text( "data/update/unable" ) );
- textOut( "Vorgang abgeschlossen\n" );
- warten = 0;
- StopNachrichtenSchleife( fenster->getFensterHandle() );
- return 0;
- }
- int LTStart Framework::Start( Startparam p )
- {
- Framework::initFramework();
- WNDCLASS wc = F_Normal( p.hinst );
- wc.lpszClassName = "Übernehme Änderungen...";
- fenster = new WFenster();
- fenster->erstellen( WS_SYSMENU, wc );
- fenster->setGröße( 310, 185 );
- fenster->setPosition( Bildschirmmitte( fenster->getThis() ) );
- fenster->setVSchließAktion( fensterSchließenME );
- fenster->setAnzeigeModus( 1 );
- screen = new Bildschirm( fenster->getThis() );
- screen->setBackBufferGröße( new Punkt( 300, 150 ) );
- screen->update();
- screen->render();
- fenster->setBildschirm( screen->getThis() );
- LTDSDatei *schriftD = new LTDSDatei();
- schriftD->setPfad( new Text( "data/schriften/normal.ltds" ) );
- schriftD->leseDaten();
- Schrift *schrift = schriftD->ladeSchrift();
- schriftD->release();
- output = new TextFeld();
- output->setSchriftZ( schrift->getThis() );
- output->setStyle( TF_Style::Sichtbar | TF_Style::Mehrzeilig );
- output->setSchriftFarbe( 0xFFFFFFFF );
- output->setGröße( 300, 130 );
- output->setText( "Initialisierung...\n" );
- screen->addMember( output );
- balken = new FBalken();
- balken->setSchriftZ( schrift );
- balken->setStyle( FB_Style::Sichtbar | FB_Style::Rahmen | FB_Style::Prozent | FB_Style::FFarbe | FB_Style::L_R );
- balken->setGröße( 300, 20 );
- balken->setPosition( 0, 130 );
- balken->setRFarbe( 0xFFFFFFFF );
- balken->setSFarbe( 0xFFFFFFFF );
- balken->setFBgFarbe( 0xFF00FF00 );
- balken->reset();
- balken->setSGröße( 12 );
- screen->addMember( balken );
- screen->render();
- PROCESSENTRY32 entry;
- entry.dwSize = sizeof(PROCESSENTRY32);
- HANDLE snapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, NULL);
- Text *startexe = new Text( "start.exe" );
- if( Process32First( snapshot, &entry ) == TRUE )
- {
- while( Process32Next( snapshot, &entry ) == TRUE )
- {
- if( startexe->istGleich( entry.szExeFile ) )
- {
- HANDLE hProcess = OpenProcess( PROCESS_ALL_ACCESS, FALSE, entry.th32ProcessID );
- WaitForSingleObject( hProcess, INFINITE );
- CloseHandle( hProcess );
- }
- }
- }
- startexe->release();
- CloseHandle( snapshot );
- HANDLE mutex = OpenMutex( MUTEX_ALL_ACCESS, false, "KSG_Client" );
- DWORD threadId;
- CreateThread( NULL, 0, übernehmen, 0, 0, &threadId);
- StartNachrichtenSchleife();
-
- balken->release();
- output->release();
- screen->release();
- fenster->setBildschirm( 0 );
- fenster->zerstören();
- fenster->release();
-
- ReleaseMutex( mutex );
- PROCESS_INFORMATION prozessinfo1;
- STARTUPINFO startinfo1;
- startinfo1.cb = sizeof( STARTUPINFOW );
- ZeroMemory( &startinfo1, sizeof( STARTUPINFOW ) );
- if( CreateProcess( 0, "start.exe", 0, 0, 0, 0, 0, 0, &startinfo1, &prozessinfo1 ) == 1 )
- {
- CloseHandle( prozessinfo1.hThread );
- }
- return 0;
- }
|