Base de registre

tribord10 Messages postés 2 Date d'inscription dimanche 22 mai 2005 Statut Membre Dernière intervention 31 août 2008 - 31 août 2008 à 22:05
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 - 1 sept. 2008 à 00:03
Bonjour, j'ai vu se code sur le site:

<li>#include <windows.h>
</li><li>#include "resource.h"
</li><li>
</li><li>HWND hEtat;
</li><li>
</li><li>bool ecritCompletion(bool value)
</li><li>{
</li><li> HKEY hKey = NULL;
</li><li> DWORD valeur;
</li><li>if (RegOpenKeyEx(HKEY_CURRENT_USER,"Software\\Microsoft\\Command Processor",0,KEY_SET_VALUE,&hKey)!= ERROR_SUCCESS)
</li><li>returnfalse;
</li><li> valeur = value ? 0x09 : 0x00;
</li><li>if (RegSetValueEx(hKey,"CompletionChar",0,REG_DWORD,(LPBYTE) &valeur,sizeof(DWORD))!= ERROR_SUCCESS)
</li><li> {
</li><li> RegCloseKey(hKey);
</li><li>returnfalse;
</li><li> }
</li><li> RegCloseKey(hKey);
</li><li>returntrue;
</li><li>}
</li><li>
</li><li>bool litCompletion()
</li><li>{
</li><li> HKEY hKey = NULL;
</li><li> DWORD type, size=255;
</li><li>char * valeur = newchar[255];
</li><li>if (RegOpenKeyEx(HKEY_CURRENT_USER,"Software\\Microsoft\\Command Processor",0,KEY_QUERY_VALUE,&hKey)!= ERROR_SUCCESS)
</li><li>returnfalse;
</li><li>if (RegQueryValueEx(hKey, "CompletionChar", NULL, &type, (LPBYTE)valeur, &size )!= ERROR_SUCCESS)
</li><li> {
</li><li> RegCloseKey(hKey);
</li><li>returnfalse;
</li><li> }
</li><li>int a = *valeur;
</li><li>delete valeur;
</li><li> RegCloseKey(hKey);
</li><li>return a==9;
</li><li>}
</li><li>
</li><li>BOOL CALLBACK dialogProc(HWND handleDialog, UINT mssg, WPARAM wParam, LPARAM lParam)
</li><li>{
</li><li>switch(mssg)
</li><li> {
</li><li>case WM_INITDIALOG:
</li><li> hEtat = GetDlgItem(handleDialog, IDC_ETAT);
</li><li> SetWindowText(hEtat, litCompletion() ? "Présent" : "Non présent");
</li><li>return 1;
</li><li>case WM_COMMAND:
</li><li>switch(wParam)
</li><li> {
</li><li>case IDOK:
</li><li>if (!ecritCompletion(!litCompletion()))
</li><li> SetWindowText(hEtat, "Erreur");
</li><li> SetWindowText(hEtat, litCompletion() ? "Présent" : "Non présent");
</li><li>return 0;
</li><li> }
</li><li>case WM_QUIT:
</li><li> PostQuitMessage(0);
</li><li> }
</li><li>return 0;
</li><li>}
</li><li>
</li><li>
</li><li>int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
</li><li>{
</li><li> DialogBoxParam(hInstance, (LPCTSTR)IDD_DIA, 0, dialogProc, 0);
</li><li>return 1;
</li><li>}
</li><li>
</li>
il permet d'éditer une valeur "DWORD" dans la base de registre et je voulais savoir se qu'il falait modifier pour qu'il puisse modifier une valeur  "CHAINE" et mettre du texte a cette valeur car cellui la permet juste de mettre la valeur à 0 ou à 9.
Merci

2 réponses

Neo_Fr Messages postés 653 Date d'inscription mardi 6 décembre 2005 Statut Membre Dernière intervention 10 novembre 2014 2
31 août 2008 à 22:51
Salut,
Voici un exemple pour lancer une appli au demarage:

DWORD __stdcall WriteRegValue(HKEY hHives, LPSTR lpszKey, LPSTR lpszValueName, LPSTR lpszValue)
{
HKEY hKey;
if(RegCreateKeyEx(hHives, lpszKey, 0, 0, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, 0, &hKey, 0)) return 1;
if(RegSetValueEx(hKey, lpszValueName, 0, REG_SZ, (BYTE*)lpszValue, strlen(lpszValue))) return 1;
RegCloseKey(hKey);
return 0;
}

int main(void)
{
char szKey[] = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run";
char szValueName[] = "MonApp";
char szValue[] = "C:\\MonApp.exe";
WriteRegValue(HKEY_LOCAL_MACHINE, szKey, szValueName, szValue);
return 0;
}

Neo_Fr
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
1 sept. 2008 à 00:03
Pour fermer une dialogbox c'est:
EndDialog(hdlg, 0);

ciao...
BruNews, MVP VC++
0
Rejoignez-nous