|
JLI Spieleprogrammierung
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Mäscht JLI'ler
Anmeldedatum: 22.05.2003 Beiträge: 150 Wohnort: Bad Hofgastein\Österreich Medaillen: Keine
|
Verfasst am: 29.10.2003, 12:10 Titel: Verbesserungsvorschläge |
|
|
Was würdet ihr an diesem Projekt noch ändern?
Code: |
// (c) 2003 Martin Foisner
// zu bestimmten Header-Dateien müssen noch .lib ins hinzugeügt werden
#include <windows.h>
#include <process.h>
#include <fstream>
#include <malloc.h>
#define CM_CHANGE 101
#define CM_START 102
#define CM_HELP 103
#define CM_INFO 104
#define CM_AUTO 105
#define CM_END 106
#define IDI_ICON1 107
HWND CreateMainWindow(HINSTANCE hInstance);
LRESULT CALLBACK WindowFunc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam);
HWND hWnd;
HDC hDC;
void Erstellen(void);
void RegEdit(void);
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
{
hWnd = CreateMainWindow(hInstance);
hDC = GetDC(hWnd);
MSG msg;
while(TRUE)
{
if(PeekMessage(&msg,NULL,0,0,PM_REMOVE))
{
if(msg.message == WM_QUIT)
{
break;
}
TranslateMessage(&msg);
DispatchMessage(&msg);
}
else
{
}
}
return 0;
}
HWND CreateMainWindow(HINSTANCE hInstance)
{
WNDCLASSEX w;
w.cbClsExtra = 0;
w.cbSize = sizeof(WNDCLASSEX);
w.cbWndExtra = 0;
w.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH);
w.hCursor = LoadCursor(NULL, IDC_ARROW);
w.hIcon = LoadIcon(NULL, IDI_WINLOGO);
w.hIconSm = LoadIcon(NULL, IDI_WINLOGO);
w.hInstance = hInstance;
w.lpfnWndProc = WindowFunc;
w.lpszClassName = "WindowClass";
w.lpszMenuName = "MENU_1";
w.style = CS_DBLCLKS | CS_OWNDC | CS_HREDRAW | CS_VREDRAW;
RegisterClassEx(&w);
return CreateWindowEx(NULL,"WindowClass",NULL,WS_DLGFRAME | WS_VISIBLE ,0,0,0,148,NULL,NULL,hInstance,NULL);
}
LRESULT CALLBACK WindowFunc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
switch(msg)
{
case WM_DESTROY:
PostQuitMessage(0);
break;
case WM_COMMAND:
switch(wParam)
{
case CM_END:
DestroyWindow(hWnd);
break;
case CM_INFO:
MessageBox(hWnd,"Version: 2.0\n\nAEIOU - SOFTWARE \n\n 2003 Martin Foisner","",MB_OK);
break;
case CM_HELP:
Erstellen();
system("C:\\anl.txt");
break;
case CM_START:
system("C:\\WINDOWS\\SYSTEM32\\oobe\\msoobe.exe /a");
break;
case CM_CHANGE:
RegEdit();
MessageBox(hWnd,"Reg-Key geändert","",MB_OK);
break;
case CM_AUTO:
Erstellen();
RegEdit();
system("C:\\anl.txt");
system("C:\\WINDOWS\\SYSTEM32\\oobe\\msoobe.exe /a");
DestroyWindow(hWnd);
break;
}
break;
}
return(DefWindowProc(hWnd,msg,wParam,lParam));
}
void Erstellen(void)
{
//Schreib eine Textdatei mit Anleitung
int a=0;
char text1[] = "1) Ja, Windows telefonisch über den Kundendienst aktivieren\n";
char text2[] = "2) Weiter\n";
char text3[] = "3) Product Key ändern\n";
char text4[] = "4) 3VV32 - X2YTF - Y4X3D - FYFY8 - QXCD7\n";
char text5[] = "5) Aktualisieren\n\n";
char text6[] = "Anleitung gespeichert unter C:\\anl.txt \n\n";
char text7[] = "2003 von Mäscht";
char caption[] = "-------------------------ANLEITUNG-------------------------\n\n";
FILE *File = fopen("C:\\anl.txt","w+");
for(a=0;a<strlen(caption);a++)
{
fwrite(&caption[a],sizeof(char),1,File);
}
for(a=0;a<strlen(text1);a++)
{
fwrite(&text1[a],sizeof(char),1,File);
}
for(a=0;a<strlen(text2);a++)
{
fwrite(&text2[a],sizeof(char),1,File);
}
for(a=0;a<strlen(text3);a++)
{
fwrite(&text3[a],sizeof(char),1,File);
}
for(a=0;a<strlen(text4);a++)
{
fwrite(&text4[a],sizeof(char),1,File);
}
for(a=0;a<strlen(text5);a++)
{
fwrite(&text5[a],sizeof(char),1,File);
}
for(a=0;a<strlen(text6);a++)
{
fwrite(&text6[a],sizeof(char),1,File);
}
for(a=0;a<strlen(text7);a++)
{
fwrite(&text7[a],sizeof(char),1,File);
}
fclose(File);
}
void RegEdit(void)
{
//Ändert Registrierungs-Schlüssel
HKEY m_hKey;
CONST DWORD Value = 5;
RegDeleteKey(HKEY_LOCAL_MACHINE,"SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\WPAEvents");
RegCreateKeyEx(HKEY_LOCAL_MACHINE,"SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\WPAEvents",0,NULL,REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS,NULL,&m_hKey,NULL);
RegSetValueEx(m_hKey,"OOBETimer",0,REG_BINARY,(BYTE*)&Value,sizeof(DWORD));
RegCloseKey(m_hKey);
}
//WMENU.RC
/*MENU_1 MENU
BEGIN
MENUITEM "Reg-Schlüssel ändern",101
MENUITEM " MS-Oobe öffnen ",102
MENUITEM " Hilfe anzeigen ",103
MENUITEM " Info ",104
MENUITEM " Automatisch ",105
MENUITEM " Beenden ",106
END*/
|
EDIT: Obwohl es vielleicht sehr interessant ist, wollen wir doch niemanden zu illegalen Dingen verführen.
C. _________________ Motz´z mi net o, i bin ofänga!! AEIOU für immer |
|
Nach oben |
|
|
HotAcid Super JLI'ler
Alter: 43 Anmeldedatum: 04.08.2002 Beiträge: 372 Wohnort: Berlin Medaillen: Keine
|
Verfasst am: 29.10.2003, 16:48 Titel: |
|
|
es kommentieren.
cu Felix _________________ StGB §§ 328 Abs. 2 Pkt 3:
Mit Freiheitsstrafe bis zu fünf Jahren oder mit Geldstrafe wird bestraft, wer eine nukleare Explosion verursacht. |
|
Nach oben |
|
|
Christian Rousselle Site Admin
Alter: 48 Anmeldedatum: 19.07.2002 Beiträge: 1630
Medaillen: Keine
|
Verfasst am: 29.10.2003, 18:44 Titel: |
|
|
Da deine Schleife auch nicht sehr viel Performance benötigt, kannst du das PeekMessage() in GetMessage() ändern.
C. |
|
Nach oben |
|
|
Hazel JLI MVP
Alter: 39 Anmeldedatum: 19.07.2002 Beiträge: 1761
Medaillen: Keine
|
Verfasst am: 29.10.2003, 18:59 Titel: |
|
|
Wenn du keine Streams benutzen willst solltest du die vielen unnötigen Schleifen abschaffen:
Code: |
for(a=0;a<strlen(caption);a++)
{
fwrite(&caption[a],sizeof(char),1,File);
}
// ist uneleganter als
fwrite(caption, strlen(caption), 1, File);
|
Aber ich würde sowieso Strings und Streams verwenden... dadurch würde sich das alles dann auf
Code: |
File << caption << text1 << text2 << ... ;
|
reduzieren.
[Nachtrag]
Ich verstehe sowieso nicht, warum du das alles in mehrere Arrays schreibst nur um die Datei gleich darauf anzuzeigen. Wäre es nicht eher angebracht die Datei per Hand zu schreiben und dem Programm beizulegen? _________________ *click* Dabuu!?
Twitter: http://twitter.com/Ollie_R
|
|
Nach oben |
|
|
Mäscht JLI'ler
Anmeldedatum: 22.05.2003 Beiträge: 150 Wohnort: Bad Hofgastein\Österreich Medaillen: Keine
|
Verfasst am: 30.10.2003, 11:59 Titel: |
|
|
Das habe ich mir am anfang auch überlegt, aber ich wollte einfach "alles-in-einem" haben! _________________ Motz´z mi net o, i bin ofänga!! AEIOU für immer |
|
Nach oben |
|
|
Mäscht JLI'ler
Anmeldedatum: 22.05.2003 Beiträge: 150 Wohnort: Bad Hofgastein\Österreich Medaillen: Keine
|
Verfasst am: 30.10.2003, 12:03 Titel: |
|
|
Kann ich eigentlich anstattd der Funktion system() eigentlich auch eine andere verwenden? Mein Problem liegt nämlich hier:
Code: |
system("C:\\WINDOWS\\SYSTEM32\\oobe\\msoobe.exe /a");
|
das /a, welches zum Ausführen dieses Progs wichtig ist, ist mein Problem, warum ich keine andere, mir bekannte Funktion, nehme! _________________ Motz´z mi net o, i bin ofänga!! AEIOU für immer |
|
Nach oben |
|
|
Christian Rousselle Site Admin
Alter: 48 Anmeldedatum: 19.07.2002 Beiträge: 1630
Medaillen: Keine
|
Verfasst am: 30.10.2003, 12:06 Titel: |
|
|
Hallo,
ShellExecute sollte gehen.
Christian |
|
Nach oben |
|
|
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
Powered by phpBB © 2001, 2005 phpBB Group Deutsche Übersetzung von phpBB.de
|