Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » Char in unsigniert Long

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: [ 1 ] > 2 < [ 3 ]
010
09.09.2002, 05:08 Uhr
~Dieter
Gast


So:
C++:
        HKEY hKey2;
        RegCreateKeyEx(HKEY_CURRENT_USER,"Software\\MysticSoft\\CSS",0,NULL,REG_OPTION_NON_VOLATILE,
        KEY_ALL_ACCESS | KEY_WRITE,NULL,&hKey2,NULL);
        char prioreg[200];
        unsigned long WertTyp2;
        unsigned long nMaxLenge2 = 200;
        RegQueryValueEx(hKey2, "prio",0,&WertTyp2,(unsigned char*)prioreg,&nMaxLenge2);
        RegCloseKey(hKey2);

        CString a = parameter;
        char* b= gamedir;
        char zusammen[1000];
        strcpy(zusammen,b);
        strcat(zusammen," ");
        strcat(zusammen,a);

        unsigned long progin = (unsigned)atol(prioreg); // long atol(const char *string); Konvertiert char into long

        CString test;
        test.Format("%d - %s",progin,prioreg);
        AfxMessageBox(test);

        STARTUPINFO si = {sizeof(si)};
        PROCESS_INFORMATION pi;
        CreateProcess(NULL,zusammen,NULL,NULL,TRUE,progin,NULL,NULL,&si,&pi);


Bekomme ich aus progin ein 0 zurück aber das hier ist der einzige code den ich drin habe.Ich kann mir bis jetz noch nicht erklären wo das Problem liegt.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
011
09.09.2002, 08:05 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


Schick mir mal das Projekt (ohne Debug & Release Ordner)
dann schau ichs mir mal genauer an ...

Achja, und exportier per regedit den Registryeinrtag und schicks mit, damit ich das genau testen kann ...
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
012
11.09.2002, 04:43 Uhr
~Dieter
Gast


So was is nu ich hab es dir geschickt aber ich bekomme keine Antwort?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
013
11.09.2002, 13:20 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


hmm seltsam, bis jetzt hab ich noch nix bekommen, schicks mal an folgende Adresse: Florian.Doersch@t-online.de
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
014
11.09.2002, 17:44 Uhr
~Dieter
Gast


So jetz is es an Florian.Doersch@t-online.de geschickt wurden.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
015
11.09.2002, 18:57 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


ok diesmal hab ichs bekommen, ich weiß auch wo dein Fehler liegt:

Du schreibst den Namen der Priorität rein, nicht seinen "richtigen" Wert!

z.b.


C++:
m_prioreg = "NORMAL_PRIORITY_CLASS";



Das ist ein String! kein DWORD wert welcher
NORMAL_PRIORITY_CLASS normalerweiße ist!

Du musst schon


C++:
m_prioreg.Format("%d",NORMAL_PRIORITY_CLASS);


schreiben!

Die ganzen Teile sind in winbase.h definiert:


C++:
//...
#define NORMAL_PRIORITY_CLASS             0x00000020
//...



das 0x00000020 ist der wirkliche wert!

Was du natürlich machen kannst (was ich etz persönlich vorziehen würde weil ich von natur aus faul bin):


C++:
//...
strcat(zusammen,a);

unsigned long progin = 0;

if(strcmp(prioreg,"IDLE_PRIORITY_CLASS")==0)
    progin = IDLE_PRIORITY_CLASS;
// usw ...

CString test;
//...


--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
016
11.09.2002, 20:07 Uhr
~Dieter
Gast


Ich wiel ja nich generl das progin = IDLE_PRIORITY_CLASS sonder nur wenn es in der Reg steht so trage ich es ja einfach da ein.Ich möchte ja nur das er den wert den er so aus liest:


C++:
        HKEY hKey2;
        RegCreateKeyEx(HKEY_CURRENT_USER,"Software\\MysticSoft\\CSS",0,NULL,REG_OPTION_NON_VOLATILE,
        KEY_ALL_ACCESS | KEY_WRITE,NULL,&hKey2,NULL);
        char prioreg[200];
        unsigned long WertTyp2;
        unsigned long nMaxLenge2 = 200;
        RegQueryValueEx(hKey2, "prio",0,&WertTyp2,(unsigned char*)prioreg,&nMaxLenge2);
        RegCloseKey(hKey2);


In unsigned long kopiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
017
11.09.2002, 22:57 Uhr
Uwe
C/C++ Master
(Administrator)


Hallo Dieter u. Flo,
Sorry wenn ich mich hier einschalte, aber sonst läuft das noch gen endlos.
NORMAL_PRIORITY_CLASS usw. sind Konstanten. Du kannst hier nur deren Wert in die Registry schreiben und nichr den "String". Wenn Du danach in eine Zahl wandeln willst erhälst Du z.B. für NORMAL_PRIORITY_CLASS 323888 oder ähnlich. Lösungsansatz:

C++:
void CReadRegDlg::OnWrite()
{
    CString strTemp="Software\\MysticSoft\\CSS\\";
    DWORD dwprioreg = HIGH_PRIORITY_CLASS;
    LONG lResult=ERROR_SUCCESS;
    HKEY hSchluessel;
    lResult=RegOpenKeyEx(HKEY_LOCAL_MACHINE,strTemp,0,KEY_ALL_ACCESS,&hSchluessel);
    if (lResult==ERROR_SUCCESS){
        MessageBox("Schlüssels existiert bereits!");
        RegCloseKey(hSchluessel);
    }
    else{
        RegCreateKey(HKEY_LOCAL_MACHINE,strTemp,&hSchluessel);
        
        RegSetValueEx(hSchluessel,"PRIORITY",NULL,REG_DWORD,
            (byte*)&dwprioreg,4);
        RegCloseKey(hSchluessel);
    }

}

void CReadRegDlg::OnRead()
{

    DWORD dwPrioreg;
    unsigned long lValueType=REG_DWORD;
    unsigned long lDataSize=4;
    
    STARTUPINFO si = {sizeof(si)};
    PROCESS_INFORMATION pi;
    long lResult;

    CString strTemp="Software\\MysticSoft\\CSS\\";
    HKEY hSchluessel;
    lResult=RegOpenKey(HKEY_LOCAL_MACHINE,strTemp,&hSchluessel);
    if(lResult==ERROR_SUCCESS){
        RegQueryValueEx(hSchluessel,"PRIORITY",NULL,&lValueType,
            (byte*)&dwPrioreg,&lDataSize);
        TRACE("%d",dwPrioreg);
        CreateProcess("C:\\WINDOWS\\NOTEPAD.EXE",NULL,NULL,NULL,TRUE,
            dwPrioreg,NULL,NULL,&si,&pi);
        
    }
}

--
"Es ist schwierig, ein Programm wirklich idiotensicher zu machen, weil Idioten so genial sind."

Bis dann...
Uwe

Dieser Post wurde am 11.09.2002 um 22:59 Uhr von Uwe editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
018
12.09.2002, 05:24 Uhr
~Dieter
Gast



C++:
'CreateProcessA' : Konvertierung des Parameters 6 von 'char [200]' in 'unsigned long' nicht moeglich
        Diese Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat
r>
eigenlich SCHREIBT MAN CreateProcess
C++:
CreateProcess("C:\WINDOWS\\NOTEPAD.EXE",NULL,NULL,NULL,TRUE,
            NORMAL_PRIORITY_CLASS ,NULL,NULL,&si,&pi);
so darum habe ne abfrage von einer Combobax gemacht:
C++:
        if (m_priostr == "Niedrig")
        {
        UpdateData(TRUE);
        m_prioreg = "IDLE_PRIORITY_CLASS";
        UpdateData(FALSE);
        }


Diesen jetz in m_prioreg geschreibenen wert schreibe ich so:

C++:
        CRegKey key2;
        key2.Create(HKEY_CURRENT_USER,"Software\\MysticSoft\\CSS",REG_NONE,REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS,NULL,NULL);
        key2.SetValue(m_prioreg,"prio");
        key2.Close();
in die reg.Als steh jetz unter Software\\MysticSoft\\CSS im key prio IDLE_PRIORITY_CLASS diesen wert soll er so wieder auslesen wie ich ihn reingeschreiben habe.Das mache ich so|CPP|| jetz habe ich IDLE_PRIORITY_CLASS in der char variable prioreg was man auch mit test's nachweisen kann.Diesen muss ich jetz so einsetzen.
C++:
        HKEY hKey2;
        RegCreateKeyEx(HKEY_CURRENT_USER,"Software\\MysticSoft\\CSS",0,NULL,REG_OPTION_NON_VOLATILE,
        KEY_ALL_ACCESS | KEY_WRITE,NULL,&hKey2,NULL);
        char prioreg[200];
        unsigned long WertTyp2;
        unsigned long nMaxLenge2 = 200;
        RegQueryValueEx(hKey2, "prio",0,&WertTyp2,(unsigned char*)prioreg,&nMaxLenge2);
        RegCloseKey(hKey2);
.Wenn ich das jetz so schreibe sagt er:
C++:
        STARTUPINFO si = {sizeof(si)};
        PROCESS_INFORMATION pi;
        CreateProcess(NULL,zusammen,NULL,NULL,TRUE,prioreg,NULL,NULL,&si,&pi);
.Also muss ich nur die char Variable prioreg in die unsigned long Variable progin umwandeln oder nicht?

Dieser Post wurde am 12.09.2002 um 06:45 Uhr von Uwe editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
019
12.09.2002, 06:52 Uhr
Uwe
C/C++ Master
(Administrator)


Hallo Dieter,
denk mal in Ruhe darüber nach was eigentlich IDLE_PRIORITY_CLASS usw. sind und ließ nochmal den letzten Beitrag von mir.
IDLE_PRIORITY_CLASS ist einen KONSTANTE !!!!!!!
--
"Es ist schwierig, ein Programm wirklich idiotensicher zu machen, weil Idioten so genial sind."

Bis dann...
Uwe
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: [ 1 ] > 2 < [ 3 ]     [ VC++ / MFC ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: