Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden.
Du solltest ein Upgrade durchführen oder einen alternativen Browser verwenden.
Du solltest ein Upgrade durchführen oder einen alternativen Browser verwenden.
[C] swich mit Wort
- Ersteller Murphy7
- Erstellt am
BlackMark
Lt. Commander
- Registriert
- Juni 2007
- Beiträge
- 1.346
Was verstehst du unter tastendrücke sperren?
So kann man ein passwort abfragen, so dass statt der eingabe Sternchen kommen:
Gruß
BlackMark
So kann man ein passwort abfragen, so dass statt der eingabe Sternchen kommen:
Code:
#include <stdio.h>
#include <conio.h>
#include <string.h>
int main()
{
char pass[100];
memset( pass, 0, 100 );
int i = 0;
printf("Enter Password: ");
pass[0] = _getch();
while(pass[i]!=13)
{
i++;
printf("*");
pass[i] = _getch();
}
printf("\n\nYou entered: %s\n", pass);
return 0;
}
Gruß
BlackMark
BlackMark
Lt. Commander
- Registriert
- Juni 2007
- Beiträge
- 1.346
1. Ich weiß nicht ob das möglich ist, ich vermute jedoch, dass Windows es nicht zulassen würde, wenn man solche Tastenkombinationen blockiert.
2. Hier ein Beispiel wie man den Key wieder aus dem Autostart entfernt:
Gruß
BlackMark
2. Hier ein Beispiel wie man den Key wieder aus dem Autostart entfernt:
Code:
#include <stdio.h>
#include <windows.h>
BOOL DeleteAutostart( char *name, char *Value )
{
HKEY hKey;
HKEY key = HKEY_LOCAL_MACHINE; // Bei Vista am besten HKEY_CURRENT_USER verwenden.
char place[] = {"Software\\Microsoft\\Windows\\CurrentVersion\\Run"};
if( (RegOpenKeyEx(key, place,0, KEY_ALL_ACCESS,&hKey)) != ERROR_SUCCESS )
return FALSE;
if( (RegDeleteValue(hKey, name)) != ERROR_SUCCESS )
return FALSE;
if( (RegCloseKey(hKey)) != ERROR_SUCCESS )
return FALSE;
return TRUE;
}
int main( int argc, char **argv )
{
char Name[] = {"Passwortschutz"}; // Der name ist beliebig wählbar.
char *Value = *argv; // Hier kommt der Pfad der Datei rein die in den Autostart geschrieben werden soll.
// Da in *argv der Pfad des aktuellen Programms steht, kommt das hier hin.
if( !DeleteAutostart( Name, Value ) )
{
printf("ERROR - Unable to create Autostart key!\n");
}
return 0;
}
Gruß
BlackMark
BlackMark
Lt. Commander
- Registriert
- Juni 2007
- Beiträge
- 1.346
Hier ein Beispiel wie man das Fenster verschiebt bzw. vergrößert/verkleinert und Fullscreen macht:
Bei MoveWindow sind die Parameter 2 & 3 die Koordinaten des Fensters und die Parameter 4 & 5 die Breite bzw. Höhe des Fensters.
Gruß
BlackMark
Code:
#include <windows.h>
void FullScreen( bool bFullScreen )
{
typedef BOOL (WINAPI *PROCSETCONSOLEDISPLAYMODE)(HANDLE,DWORD,LPDWORD);
typedef BOOL (WINAPI *PROCGETCONSOLEDISPLAYMODE)(LPDWORD);
PROCSETCONSOLEDISPLAYMODE SetConsoleDisplayMode;
PROCGETCONSOLEDISPLAYMODE GetConsoleDisplayMode;
HMODULE hKernel32 = GetModuleHandle("kernel32");
SetConsoleDisplayMode = (PROCSETCONSOLEDISPLAYMODE)
GetProcAddress(hKernel32, "SetConsoleDisplayMode");
GetConsoleDisplayMode = (PROCGETCONSOLEDISPLAYMODE)
GetProcAddress(hKernel32, "GetConsoleDisplayMode");
HANDLE hOut = ::GetStdHandle(STD_OUTPUT_HANDLE);
DWORD dwOldMode;
SetConsoleDisplayMode(hOut,bFullScreen,&dwOldMode);
}
int main()
{
HWND hConsole = GetConsoleWindow();
MoveWindow(hConsole, 0, 0, 500, 300, TRUE); // Positioniert das Fenster
FullScreen(true); // true = FullScreen, false = Windowed
return 0;
}
Bei MoveWindow sind die Parameter 2 & 3 die Koordinaten des Fensters und die Parameter 4 & 5 die Breite bzw. Höhe des Fensters.
Gruß
BlackMark
Ich gebe zu das blocken von Tastatureingaben übertrieben war. Aber nach loggen habe ich nie gefragt und hatte es auch nicht vor. Ich habe auch nicht vor Malware, trojaner, Viren... zu programmieren.
@BlackMark
Danke für deine Hilfe mit dem FullScreen.
War sowas wie Fullscreen und Autostart alles in der DVD erklärt die du mir empfohlen hast?
@BlackMark
Danke für deine Hilfe mit dem FullScreen.
War sowas wie Fullscreen und Autostart alles in der DVD erklärt die du mir empfohlen hast?
Er wollte es wissen, siehe oben. Außerdem hat er angesprochen, dass er mit dem Programm "ein paar Freunde erschrecken will". Dazu ist es aber sicherlich nicht nötig, hier nacheinander sich die Features zu erfragen, die man auch tatsächlich für Malware einsetzt (Autostart-Routinen, nicht Beenden bei Klick auf X, Sperren von Tastatureingaben usw.).BlackMark schrieb:Wo wurde denn bitte das Sperren oder Loggen von Tastatureingaben erklärt?
@Murphy7:
Als Einsteiger, der so grundlegende Sachen wie die Funktionsweise und Limitierungen des switch-Befehls nicht kennt, solltest du meiner Meinung nach erstmal sinnvollere Sachen üben (Rekursion, Sortieralgorithmen, Pointer). Insbesondere sind die hier eingesetzten Techniken Windows-spezifisch und kein reiner C-Standard. Nachdem du mit C einigermaßen zurecht kommst, solltest du dann auch eher zu objektorientierten Sprachen wie C++ (mit .NET) oder Java übergehen. Außer natürlich wenn du wirklich langfristig nur Lowlevel-Programme wie eben Malware schreiben willst
BlackMark
Lt. Commander
- Registriert
- Juni 2007
- Beiträge
- 1.346
@BerniG:
Malware könnte man theoretisch schon aus einer einfachen Endlosschleife entstehen lassen.
Die Windows API bietet auch genug Möglichkeiten Maleware zu schreiben, wie eben Klick auf X schließt das Programm nicht etc.
Jedoch lernt man dadurch auch die Sprache, was sicherlich kein Nachteil ist.
@Murphy7:
Nein auf der DVD werden die Grundlagen von C++ erklärt, also Schleifen, Pointer, Funktionen und natürlich die für C++ sehr wichtige Objekt Orientierte Programmierung.
Gruß
BlackMark
Malware könnte man theoretisch schon aus einer einfachen Endlosschleife entstehen lassen.
Die Windows API bietet auch genug Möglichkeiten Maleware zu schreiben, wie eben Klick auf X schließt das Programm nicht etc.
Jedoch lernt man dadurch auch die Sprache, was sicherlich kein Nachteil ist.
@Murphy7:
Nein auf der DVD werden die Grundlagen von C++ erklärt, also Schleifen, Pointer, Funktionen und natürlich die für C++ sehr wichtige Objekt Orientierte Programmierung.
Gruß
BlackMark
BlackMark
Lt. Commander
- Registriert
- Juni 2007
- Beiträge
- 1.346
Ja der Fehler tritt auf wenn du nicht als Release Compilierst sondern als Debug.
Du musst einfach oben in der Leiste wo Debug steht, auf Release stellen, dann Funktioniert es.
Außerdem würde ich generell empfehlen das Projekt ohne Runtime Library zu Compilieren, da sonst Fehler auftreten könnten, wenn diese Runtime Library auf anderen PC's nicht vorhanden ist.
Diese Einstellung kannst du hier vornehmen ( ich habe wie gesagt das Englische Visual Studio, deshalb kann ich dir jetzt nur den Englischen Pfad geben ) :
Project -> "Project Name" Properties... -> Configuration Properties -> C/C++ -> Code Generation -> Runtime Library:
wenn du unter Debug bist stell ein: Multi-threaded Debug (/MTd)
und wenn du unter Release bist: Multi-threaded (/MT)
Somit wird die exe zwar größer, aber es läuft auch auf anderen PC's die eben keine Runtime Library habe.
Gruß
BlackMark
Du musst einfach oben in der Leiste wo Debug steht, auf Release stellen, dann Funktioniert es.
Außerdem würde ich generell empfehlen das Projekt ohne Runtime Library zu Compilieren, da sonst Fehler auftreten könnten, wenn diese Runtime Library auf anderen PC's nicht vorhanden ist.
Diese Einstellung kannst du hier vornehmen ( ich habe wie gesagt das Englische Visual Studio, deshalb kann ich dir jetzt nur den Englischen Pfad geben ) :
Project -> "Project Name" Properties... -> Configuration Properties -> C/C++ -> Code Generation -> Runtime Library:
wenn du unter Debug bist stell ein: Multi-threaded Debug (/MTd)
und wenn du unter Release bist: Multi-threaded (/MT)
Somit wird die exe zwar größer, aber es läuft auch auf anderen PC's die eben keine Runtime Library habe.
Gruß
BlackMark
hi,
wenn du ein wirklich fieses Programm schreiben willst ohne jegliche „Überwachung“, schau dir mal das folgende an:
Das Program erstellt ein Desktop und startet sich anschließend mit geänderten Prozessparametern neu (bei mir dauert es ca. 10-15 sec. bis die Konsole sichtbar wird). Die einzige Möglichkeit das Programm zu umgehen ohne den Computer neu zu starten, ist es sich als Benutzer abzumelden! (afaik)
wenn du ein wirklich fieses Programm schreiben willst ohne jegliche „Überwachung“, schau dir mal das folgende an:
Code:
#include <iostream>
#include <windows.h>
using namespace std;
void Console();
int main()
{
STARTUPINFO sui;
PROCESS_INFORMATION pi;
CHAR buffer[512],cmd[512];
DWORD cb;
GetStartupInfo(&sui);
if(strcmp("ThisIsNasty",sui.lpDesktop) != 0)
{
SwitchDesktop(CreateDesktop("ThisIsNasty",0,0,0,GENERIC_ALL,0));
GetUserObjectInformation(GetThreadDesktop(GetCurrentThreadId()),UOI_NAME,&buffer[0],512,&cb);
GetModuleFileName(0,&cmd[0],512);
strcat(&cmd[0]," ///DeskName: ");
strcat(&cmd[0],&buffer[0]);
memset(&sui,0,sizeof(STARTUPINFO));
sui.cb = sizeof(STARTUPINFO);
sui.lpDesktop = "ThisIsNasty";
sui.lpTitle = "Irgend ein Titel";
GetModuleFileName(0,&buffer[0],512);
CreateProcess(&buffer[0],&cmd[0],0,0,FALSE,CREATE_NEW_CONSOLE,0,0,&sui,&pi);
}
else
{
HDESK hDesk,hOrg;
char* pos;
DeleteMenu(GetSystemMenu(GetConsoleWindow(),FALSE),6,MF_BYPOSITION);
Console();
pos = strstr(GetCommandLine(),"///DeskName: ");
pos = pos + 12;
sscanf(pos,"%s",&buffer[0]);
SwitchDesktop(OpenDesktop(&buffer[0],0,0,GENERIC_ALL));
CloseDesktop(OpenDesktop("ThisIsNasty",0,0,GENERIC_ALL));
}
}
void Console()
{
// neue "main-funktion"
cout << "Zum Vortfahren Eingebaetaste druecken...";
getchar();
}
Das Program erstellt ein Desktop und startet sich anschließend mit geänderten Prozessparametern neu (bei mir dauert es ca. 10-15 sec. bis die Konsole sichtbar wird). Die einzige Möglichkeit das Programm zu umgehen ohne den Computer neu zu starten, ist es sich als Benutzer abzumelden! (afaik)
BlackMark
Lt. Commander
- Registriert
- Juni 2007
- Beiträge
- 1.346
Hmm, echt coole idee, damit kann man wirklich mal "seine Freunde erschrecken" 
Villeicht noch ne passwortabfrage ins Fenster und nur mit dem richtigen passwort wieder auf den Desktop lassen.
Jedoch geht das wirklich zu sehr in richtung Virus / Maleware.
Außerdem ist der Code für nen C Anfänger viel zu kompliziert, da auch C++ ( iostream ) drinn vorkommt.
Gruß
BlackMark
Villeicht noch ne passwortabfrage ins Fenster und nur mit dem richtigen passwort wieder auf den Desktop lassen.
Jedoch geht das wirklich zu sehr in richtung Virus / Maleware.
Außerdem ist der Code für nen C Anfänger viel zu kompliziert, da auch C++ ( iostream ) drinn vorkommt.
Gruß
BlackMark
Wenn ich auf relese stelle, dann treten vier Fehler, jedoch auf Debug nicht.
Woran kann das liegen?
Es geht jetzt habe vergessen die eine Einstellung zu machen
Das mit dem Fullscreen geht nicht. Beim erstellen treten keine Fehler auf aber beim start das programmes ist alles ganz normal, wie wenn kein Fullscreen drin ist.
Woran kann das liegen?
Es geht jetzt habe vergessen die eine Einstellung zu machen
Das mit dem Fullscreen geht nicht. Beim erstellen treten keine Fehler auf aber beim start das programmes ist alles ganz normal, wie wenn kein Fullscreen drin ist.
Zuletzt bearbeitet:
BlackMark
Lt. Commander
- Registriert
- Juni 2007
- Beiträge
- 1.346
Schau mal ob du auch true in die Funktion geschrieben hast. ( FullScreen( true ); )
Bei false wird nämlich auf windowed gestellt.
Sonst könnte es villeicht auch noch ein unterschied zwischen XP und Vista sein, denn bei mir gehts einwandfrei!
Gruß
BlackMark
Bei false wird nämlich auf windowed gestellt.
Sonst könnte es villeicht auch noch ein unterschied zwischen XP und Vista sein, denn bei mir gehts einwandfrei!
Gruß
BlackMark
Ruby-Boolean
Cadet 4th Year
- Registriert
- Okt. 2007
- Beiträge
- 71
Hallo
Ich habe eine Frage, wie kann man zwei Arrays mit einem if vergleichen?
Hier ist noch ein Beispiel von meinem Problem.
Ich danke allen schon mal im vorraus Danke!
Ich habe eine Frage, wie kann man zwei Arrays mit einem if vergleichen?
Hier ist noch ein Beispiel von meinem Problem.
Code:
#include <stdio.h>
#include <string.h>
void main()
{
char text1[100] = "passwort";
char test[9] = "Passwort";
if (strcmp(text1[100],test[9]) == 0)
{
printf("ok");
}
else
{
printf("ungleich");
}
getchar();
}
Zuletzt bearbeitet:
BlackMark
Lt. Commander
- Registriert
- Juni 2007
- Beiträge
- 1.346
Du musst den ganzen array vergleichen und nicht text1[100] und test[9], sondern text1 und test.
Also so:
Gruß
BlackMark
Also so:
Code:
#include <stdio.h>
#include <string.h>
void main()
{
char text1[100] = "passwort";
char test[9] = "Passwort";
if (strcmp(text1,test) == 0) // übersichtlicher wäre !strcmp( ... )
{
printf("ok");
}
else
{
printf("ungleich");
}
getchar();
}
Gruß
BlackMark
Wie kann man "+","-" usw. mit scanf abfragen. %d nimmt für zahlen was nimmt man für "+" ??
Die Frage hat sich erledigt es ging nur nicht, weil ich ein problem mit meinem Compiler hatte.
Doch noch mal das Problem.
das programm hatte keine Problem sobald ich dann eine if-anweisung dazu geht es nicht mehr.
Wo ist der Fehler?
Die Frage hat sich erledigt es ging nur nicht, weil ich ein problem mit meinem Compiler hatte.
Doch noch mal das Problem.
Code:
#include <stdio.h>
int main()
{
int zahl1, zahl2;
char rechenart;
printf("Eingabe:");
scanf("%d %c %d",&zahl1, &rechenart, &zahl2);
printf("Eingabe: %d %c %d\n",zahl1, rechenart, zahl2);
return 0;
}
das programm hatte keine Problem sobald ich dann eine if-anweisung dazu geht es nicht mehr.
Wo ist der Fehler?
Code:
#include <stdio.h>
int main()
{
int zahl1, zahl2;
char rechenart;
printf("Eingabe:");
scanf("%d %c %d",&zahl1, &rechenart, &zahl2);
printf("Eingabe: %d %c %d\n",zahl1, rechenart, zahl2);
if(strcmp(rechenart, "+") == 0)
{
printf("%d + %d = %d", zahl1, rechenart, zahl2, zahl1 + zahl2);
}
else printf("Sie wollen nicht rechnen");
return 0;
}
Zuletzt bearbeitet:
Ähnliche Themen
- Antworten
- 7
- Aufrufe
- 1.370
- Gesperrt
- Antworten
- 6
- Aufrufe
- 1.356