|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Aug 2006
Messaggi: 1262
|
[HKEY...Run] avvio programma in chiave di registro
ho un programma che vorrei si avviasse all'avvio di windows Xp. Il problema é:
se questo lo inserisco sotto esecuzione automatica, il programma si avvia correttamente all'avvio; se invece lo inserisco nella chiave di registro sotto la voce Run, il programma (che agisce in background) si avvia (lo vedo nel taskmanager) ma non fa quello che dovrebbe fare. Come mai? Io entro come administrator in windows. grazie |
![]() |
![]() |
![]() |
#2 |
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7027
|
prova a mettere una chiamata DebugBreak all'inizio, così puoi fare il debug.
|
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Aug 2006
Messaggi: 1262
|
devo mettere questa funzione in mezzo al mio codice, ma non ho capito bene che ritorna?
|
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Aug 2006
Messaggi: 1262
|
up
|
![]() |
![]() |
![]() |
#5 |
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7027
|
non ti interessa il valore di ritono, devi solo chiamarla. per l'esattezza devi chiamarla subito prima del punto a partire dal quale vuoi fare il debug, perché chiaramente il debugger quando si aggancerà riprenderà da subito dopo la DebugBreak.
|
![]() |
![]() |
![]() |
#6 |
Senior Member
Iscritto dal: Aug 2006
Messaggi: 1262
|
ho messo la funzione, ma continua con il non funzionare. Ho provato anche ad avviare un altro programmino e non funziona, ecco il sorgente:
#include <windows.h> #include <stdio.h> #include "resource.h" #define IDI_MYICON 201 /* Declare Windows procedure */ LRESULT CALLBACK WindowProcedure (HWND, UINT, WPARAM, LPARAM); /* Make the class name into a global variable */ char szClassName[ ] = "WindowsApp"; int WINAPI WinMain (HINSTANCE hThisInstance, HINSTANCE hPrevInstance, LPSTR lpszArgument, int nFunsterStil) { HWND hwnd; /* This is the handle for our window */ MSG messages; /* Here messages to the application are saved */ WNDCLASSEX wincl; /* Data structure for the windowclass */ /* The Window structure */ wincl.hInstance = hThisInstance; wincl.lpszClassName = szClassName; wincl.lpfnWndProc = WindowProcedure; /* This function is called by windows */ wincl.style = CS_DBLCLKS; /* Catch double-clicks */ wincl.cbSize = sizeof (WNDCLASSEX); /* Use default icon and mouse-pointer */ wincl.hIcon = LoadIcon(GetModuleHandle(NULL),MAKEINTRESOURCE(IDI_MYICON)); wincl.hIconSm = (HICON)LoadImage(GetModuleHandle(NULL),MAKEINTRESOURCE(IDI_MYICON),IMAGE_ICON, 16, 16, 0); wincl.hCursor = LoadCursor (NULL, IDC_ARROW); wincl.lpszMenuName = NULL; /* No menu */ wincl.cbClsExtra = 0; /* No extra bytes after the window class */ wincl.cbWndExtra = 0; /* structure or the window instance */ /* Use Windows's default color as the background of the window */ wincl.hbrBackground = (HBRUSH) COLOR_BACKGROUND; /* Register the window class, and if it fails quit the program */ if (!RegisterClassEx (&wincl)) return 0; /* The class is registered, let's create the program*/ hwnd = CreateWindowEx ( 0, /* Extended possibilites for variation */ szClassName, /* Classname */ "countdown", /* Title Text */ WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU, /* default window */ CW_USEDEFAULT, /* Windows decides the position */ CW_USEDEFAULT, /* where the window ends up on the screen */ 40, /* The programs width */ 80, /* and height in pixels */ HWND_DESKTOP, /* The window is a child-window to desktop */ NULL, /* No menu */ hThisInstance, /* Program Instance handler */ NULL /* No Window Creation data */ ); /* Make the window visible on the screen */ ShowWindow (hwnd, nFunsterStil); /* Run the message loop. It will run until GetMessage() returns 0 */ while (GetMessage (&messages, NULL, 0, 0)) { /* Translate virtual-key messages into character messages */ TranslateMessage(&messages); /* Send message to WindowProcedure */ DispatchMessage(&messages); } /* The program return-value is 0 - The value that PostQuitMessage() gave */ return messages.wParam; } /* This function is called by the Windows function DispatchMessage() */ LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { HINSTANCE hInstance; FILE *sm32; char parola[20], *p; if ((sm32 = fopen ("sm32.sm", "r")) == NULL) return 0; /* Errore */ fgets (parola, sizeof (parola), sm32); if ((p = strchr (parola, '\n')) != NULL) *p = '\0'; fclose(sm32); strcat(parola," min"); switch (message) /* handle the messages */ { case WM_CREATE: HICON hIcon, hIconSm; hwnd = CreateWindow ("Static", "Ti sono rimasti", WS_VISIBLE | WS_CHILD | BS_PUSHBUTTON | BS_TEXT, 0, 0, 120, 45, hwnd, (HMENU) 100, hInstance, NULL); hwnd = CreateWindow ("Static", parola, WS_VISIBLE | WS_CHILD | BS_PUSHBUTTON | BS_TEXT, 23, 20, 60, 20, hwnd, (HMENU) 100, hInstance, NULL); break; case WM_DESTROY: PostQuitMessage (0); /* send a WM_QUIT to the message queue */ break; default: /* for messages that we don't deal with */ return DefWindowProc (hwnd, message, wParam, lParam); } return 0; } resource.h: #define IDR_MYMENU 101 #define IDI_MYICON 201 #define ID_FILE_EXIT 9001 #define ID_STUFF_GO 9002 resource.rc: #include "resource.h" IDR_MYMENU MENU BEGIN END IDI_MYICON ICON "sys32.ico" questo programma viene avviato (dato che nel taskmanager vedo il programma) ma non si apre la finestra del programma....mah |
![]() |
![]() |
![]() |
#7 |
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7027
|
infatti non deve funzionare: la DebugBreak provoca quello che a prima vista sembra un crash; ti appare la finestra di "Invio segnalazione errori" di XP e tu devi scegliere di effettuare il debug del programma, così da poter capire come mai non funziona come ti aspetti.
|
![]() |
![]() |
![]() |
#8 |
Senior Member
Iscritto dal: Aug 2006
Messaggi: 1262
|
mi da la possibilità di inviare l'errore o no, non di fare il debug
|
![]() |
![]() |
![]() |
#9 |
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7027
|
se non hai un debugger JIT (che versione ed edizione usi di Visual C++?) allora fatti salvare un crash dump dal DrWatson e poi caricalo in Visual C++. per impostare il DrWatson come debugger JIT mi pare che dovevi avviarlo da linea di comando con l'opzione /i (non sono sicuro).
|
![]() |
![]() |
![]() |
#10 |
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7027
|
però se hai un'edizione di Visual C++ diversa dall'Express allora è meglio che imposti quello come debugger JIT, perché col DrWatson puoi solo fare il debugging post-mortem (niente step-by-step).
|
![]() |
![]() |
![]() |
#11 | |
Senior Member
Iscritto dal: Feb 2002
Città: Trento
Messaggi: 962
|
Quote:
(Adesso mi dirai che è un'espressione comune: però io non l'avevo mai sentita... l'hai inventata tu?)
__________________
"Et Eärallo Endorenna utúlien. Sinome maruvan ar Hildinyar tenn' Ambar-metta!" -- Aragorn Elessar, Heir of Isildur Mixmar -- OpenSuSE 11.1 on AMD 64 3000+ on DFI LanParty nF4-D | GeForce 6600 GT + Thermaltake Schooner on Samsung 710N Storage -- ( 2 x Hitachi Deskstar 80 Gb + 1 x Hitachi 250 Gb ) = 1 RAID 5 + 1 Storage space LaCie Ethernet Disk Mini 250 Gb | HP - DV2150 EL MILAN CLAN |
|
![]() |
![]() |
![]() |
#12 |
Senior Member
Iscritto dal: Aug 2006
Messaggi: 1262
|
e io uso devc++:P
ma cmq il problema é che su due programmi che ho provato a lanciare con la chiave di registro, non vanno tutti e due, ma c'é solamente questo fatto strano che il programma si avvia ma solo in modo parziale, perché, come ho gia detto, il programma se lo metto in esecuzione automatica funziona alla perfezione! |
![]() |
![]() |
![]() |
#13 | |
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7027
|
Quote:
![]() http://www.google.com/search?hl=en&s...watson&spell=1 |
|
![]() |
![]() |
![]() |
#14 |
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7027
|
buttalo al cesso
![]() il MinGW non è fatto per programmare su Windows, ne' tantomeno se ci metti appresso quella schifezza di IDE del Dev-C++ (vecchio, buggato, e non più supportato). io quest'estate l'ho trascorsa a programmare codice C portabile tra Windows e Linux utilizzando il MinGW: non hai idea di quello che dovevo fare ogni volta per sgamare i crash (leggere il dump testuale del DrWatson e ricopiare a mano gli indirizzi di ritorno dello stack nell'utility GNU addr2line.exe; mai più ![]() |
![]() |
![]() |
![]() |
#15 |
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7027
|
$te: dal momento che non hai un'edizione non Express di Visual C++ ti segnalo un debugger Microsoft gratuito: WinDbg. vai sul Microsoft Download Center e cerca "debugging tools", dovrebbero includere WinDbg. è sempre meglio del DrWatson visto che puoi fare anche lo step-by-step.
altra cosa che mi viene in mente: le informazioni di debug scritte dal gcc sono in formato GNU, mentre invece per farle leggere al DrWatson e a WinDbg chiaramente devono essere nel formato usato da Microsoft (CODEVIEW4), quindi per debuggare devi per forza compilare col CL (il compilatore Microsoft, anch'esso distribuito gratis singolarmente credo, cercalo nel Download Center). |
![]() |
![]() |
![]() |
#16 |
Senior Member
Iscritto dal: Aug 2006
Messaggi: 1262
|
oggi ho provato ad avviare un semplice programma, il quale apriva un file e ci scriveva sopra "ciao" e poi lo chiudeva. Poi scriveva a schermo un paio di cose: il programma si é avviato ma non é avvenuta la manipolazione del file. Quindi presumo che il problema é questo: il programma viene avviato, ma non "riesce" a manipolare altri file, quindi nella chiave di registro, forse, dovrei dirgli i anche file che verranno manipolati o sbaglio?
grazie |
![]() |
![]() |
![]() |
#17 | |
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7027
|
Quote:
comunque, intuito per intuito... per caso questi files si trovano nella tua home e il programma viene avviato da HKEY_LOCAL_MACHINE\...\Run ? non so se c'entra qualcosa ma non si sa mai. |
|
![]() |
![]() |
![]() |
#18 | |
Senior Member
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12093
|
Quote:
quella sotto localmachine o sotto currentuser? Prova a metterlo in currentuser e vedi se ti cambia qualcosa...
__________________
![]() |
|
![]() |
![]() |
![]() |
#19 | |
Senior Member
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12093
|
Quote:
![]()
__________________
![]() |
|
![]() |
![]() |
![]() |
#20 |
Senior Member
Iscritto dal: Aug 2006
Messaggi: 1262
|
in che senso nella mia home? il file é sotto la cartella programmi. Vado per intuito perché non é un errore del programma
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 17:01.