|
begin process at 2008 07 20 09:23:28
Derniers logiciels
|
Trouver une ressource (Nouvelle version du moteur, plus rapide & pertinent, essayez le !)
Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !
Sujet : Actualisation Refresh.exe [ Windows / Autre ] (Celestus)
|
Actualisation Refresh.exe
le 07/05/2008 17:07:45

Celestus
|
Bonjour à tous. Je suis un petit newbie qui parcours humblement ce forum à l'aide d'un problème si simple pour vous que vous en rirez... Je ne suis pas programmeur, donc je n'y comprends pas grand chose. Je fais essentiellement des scripts en batch windows, ça m'aide à installer mes programmes plus facilement et plus clairement. Mais le batch windows est assez pauvre. Pour créer des raccourcis, j'utilise un programme qui s'appelle shortcut.exe. Mon problème, c'est que j'ai besoin d'actualiser le bureau via une commande batch. - J'ai cherché dans les commandes => Rien - J'ai cherché dans les arguments d'explorer.exe => Rien - J'ai pas trouvé de dll qui fasse ça non plus, il en existe peut-être une, si quelqu'un la connait, merci de me répondre, ce serait super sympa. Bref, j'ai entendu parler d'un petit programme nommé refresh.exe qui permettait de rafraichir le bureau tout simplement, et qu'on pouvait trouver sur ce site. Quelqu'un sait-il où se trouve ce programme ? Sinon, quelqu'un pourrait-il me le coder svp ? Si ça ne vous prend pas trop de temps bien entendu...
|
|
|
|
Re : Actualisation Refresh.exe
le 07/05/2008 17:31:36

Celestus
|
C'est bon, no problème, j'ai trouvé... Un type m'a renseigné sur un autre forum...
"%windir%\System32\RUNDLL32.EXE" user32.dll,UpdatePerUserSystemParameters
Plus besoin de source...
@+
|
|
|
|
Re : Actualisation Refresh.exe
le 08/05/2008 03:09:23

Celestus
|
Et ben non.
En fait ça marche pas du tout.
Mon truc actualise certaines choses comme le wallpaper, mais depuis que Kro a viré la fonction repaintscreen de user.dll, pas moyen.
Si vous avez une solution pour le faire en vbs, je suis preneur.
Sinon il y a une solution ici. http://blogs.sepago.de/helge/2007/11/22/free-tool-refresh-the-desktop-programmatically/
|
|
|
|
Re : Actualisation Refresh.exe
le 08/05/2008 03:39:25

Celestus
|
Son utilitaire pourri, en plus d'être lent, ne fonctionne pas. desktoprefresh.exe n'actualise que le bureau, pas le reste. Ca sert à rien en fait.
Le seul moyen est de killer l'explorer avec taskkill /f /IM explorer.exe start %WinDir%\explorer.exe
Je vais me pencher sur la question voir si je trouve autre chose. Après tout, si le bouton "appliquer" peut le faire, c'est que c'est faisable.
|
|
|
|
Re : Actualisation Refresh.exe
le 09/05/2008 15:23:51

jfrancois
|
Bonjour,
Essayer avec ce petit programme (en tant qu'utilitaire dans le batch) :
#include <windows.h> int WINAPI WinMain ( HINSTANCE hInstance // E:instance courante ,HINSTANCE hInstancePrev // E:instance précédente ,LPSTR pszCommandLine // E:ligne de commande ,int iDisplay // E:mode d'affichage ) // S:code retour { // --- Lire le handle du "program manager" HWND hProgMan = FindWindow("progman",NULL);
// --- Poster l'appui sur la touche F5 (rafraîchir) if (hProgMan) PostMessage(hProgMan,WM_KEYDOWN,VK_F5,0); return 0; }
Jean-François
|
|
|
|
Re : Actualisation Refresh.exe
le 09/05/2008 15:52:08

jfrancois
|
Ou même sans passer par un programme de type Application Windows mais plus simplement de type Console (testé sous Microsoft Visual C++ 6.0) : #include <windows.h> int main(void) { // --- Lire le handle du "program manager" HWND hProgMan = FindWindow("progman",NULL);
// --- Poster l'appui sur la touche F5 (rafraîchir) if (hProgMan) PostMessage(hProgMan,WM_KEYDOWN,VK_F5,0); return 0; }
Jean-François
|
|
|
|
Re : Actualisation Refresh.exe
le 09/05/2008 18:15:59

Celestus
|
J'ai compilé et essayé tes programmes, ça ne marche pas.
Ton programme mime la touche F5 qui actualise uniquement le bureau, c'est à dire le wallpaper uniquement.
Il y a 36 moyens de faire ça, en vbs, en batch avec la fonction de user32.dll UpdatePerUserSystemParameters, j'ai déjà essayé.
Actualiser l'explorer.exe est bien différent.
Pour m'entraîner en batch, je m'amuse à faire des scripts. Le problème se pose ici avec un script pour actualiser directement les fichiers cachés. En voici le code (désolé c'est en chantier mais ça marche).
J'ai bien peur qu'il n'existe aucune méthode, car il existait avant la fonction repaintscreen de user.dll sur les anciennes version de Windows.
Mais depuis Windows NT4, Microsoft a supprimé cette fonction et a verrouillé son explorer.exe. Par sécurité ?
Bref, ma dernière piste actuelle est de trouver les fonctions d'une dll qui aurait celle-ci, seulement il faut être inscrit à la MSDN en tant que développeur pour avoir accès à ces données. Si quelqu'un peut m'aider... Son aide sera plus que bienvenue.
@echo off cls REM Script standard de paramètrage du registre de Windows REM Non compatible pour les versions plus anciennes que Windows XP
REM Ce script est fait pour être évolutif sans avoir à en modifier le corps
REM Vous pouvez rajouter autant de données que vous le voulez à la suite REM en ajoutant un autre groupe : key_1 key_2 key_2 etc. REM mais attention, la comparaison se fera toujours sur key_1
REM ________________________________________________________________ REM Description du script :
REM Sert à masquer ou démasquer les REM fichiers cachés de Windows
REM ________________________________________________________________ REM Tête du script (Head) : Seule cette partie doit être changée
REM ****************************************** set add_registry_loop=0 : head_1
REM Boucle d'exécution du script pour que toutes REM les valeurs successives soient prises en compte set /a add_registry_loop=%add_registry_loop% + 1
REM Ajoutez ici le nombre de clés à modifier en rajoutant des lignes REM (Il doit y avoir autant de lignes que de "key_?") if "%add_registry_loop%" EQU "1" goto key_1 if "%add_registry_loop%" EQU "2" goto key_2 if "%add_registry_loop%" EQU "3" goto exit
cls echo. echo. echo. echo Erreur de ce script dans la boucle de redondance. echo. echo Par s,curit,, il va donc s'arr^ter. echo. echo. echo. echo Appuyez sur une touche pour fermer ce script... pause>nul exit
REM ****************************************** REM Données utiles à l'exécution du script
REM Clé(s), valeur(s), type(s) et donnée(s) du registre à créer, modifier REM On mettra la description en dessous de la donnée REM Attention, la syntaxe de la donnée doit correspondre au type REM (On mettra toujours les DWORD en hexadécimal avec 0x devant)
: key_1 set add_registry_key=HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced set add_registry_value=Hidden set add_registry_type=REG_DWORD set add_registry_data_1=0x00000000 REM Donnée à 0 = Fichiers cachés invisibles set add_registry_data_2=0x00000001 REM Donnée à 1 = Fichiers cachés visibles goto head_2
: key_2 set add_registry_key=HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced set add_registry_value=SuperHidden set add_registry_type=REG_DWORD set add_registry_data_1=0x00000000 REM Donnée à 0 = Fichiers super-cachés invisibles set add_registry_data_2=0x00000001 REM Donnée à 1 = Fichiers super-cachés visibles goto head_2
REM Rien à faire ici ce bloc ! Penser à le virer REM Clé(s) et valeur(s) du registre à supprimer
REM : key_del_1 REM del_registry_key= REM On met "REM" car il n'y en a aucune
REM ****************************************** : head_2 REM Switchs, aiguillages du reste du script
REM Rajouter un "faut-il détécter la version de Windows"
REM Faut-il détécter la donnée d'une clé de registre ? REM (0 = Non) (1 ou + = Oui) set registry_match=1
REM Faut-il supprimer des clés de registre ? REM (0 = Non) (1 ou + = Oui) set registry_delete=0
REM ________________________________________________________________ REM Corps du script
REM ****************************************** REM Détection de la version de Windows
REM On détecte la version de Windows à la nature du dossier de tous les utilisateurs REM Ce sera "Documents and Settings" pour XP et "ProgramData" pour Vista REM Cette donnée est contenue dans la variable d'environnement "ALLUSERSPROFILE"
if "%ALLUSERSPROFILE%"=="C:\Documents and Settings\All Users" goto windows_xp if "%ALLUSERSPROFILE%"=="C:\ProgramData" goto windows_vista goto windows_error
: windows_xp set os_version=xp goto body_1
: windows_vista set os_version=vista goto body_1
: windows_error cls echo. echo. echo. echo Ce script n'a pas r,ussi . d,tecter votre version de Windows. echo. echo Par s,curit,, il va donc s'arr^ter. echo. echo. echo. echo Appuyez sur une touche pour fermer ce script... pause>nul exit
REM ****************************************** : body_1 REM Détection de l'existence des éléments du script
REM if exist, si clé registre n'existe pas, proposer de les créer REM à continuer
REM ****************************************** REM Accomplissement des tâches
REM --------------------------- REM Aiguillage vers la détection d'une donnée du registre
REM Si le switch de comparaison de valeurs de registre est REM activé (supérieur ou égal (GEQ) à 1), aller à l'indicateur REM nommé "body_2", sinon, aller directement à REM l'indicateur nommé "body_3"
if "%registry_match%" GEQ "1" goto body_2 goto body_3
REM --------------------------- : body_2 REM Détection d'une donnée du registre :
REM Ajout d'une clé de registre temporaire avec une donnée connue reg add "%add_registry_key%_temp" /v "%add_registry_value%" /t "%add_registry_type%" /d "%add_registry_data_1%" /f >nul
REM Comparaison de la donnée d'une même valeur REM pour la clé existante avec la clé temporaire REM Le résultat est automatiquement stocké dans la variable "ERRORLEVEL" REM %ERRORLEVEL% = 0 => Résultats identiques, la donnée est la même REM %ERRORLEVEL% = 2 => Résultats différents, les données sont différentes REM %ERRORLEVEL% = 1 => Echec de la comparaison, une des données n'existe pas reg compare "%add_registry_key%" "%add_registry_key%_temp" /v "%add_registry_value%" >nul
REM On sauve le résultat dans une variable car ERRORLEVEL REM est remise à 0 à chaque commande set error_level=%ERRORLEVEL%
REM On efface la clé temporaire reg delete "%add_registry_key%_temp" /f >nul
REM On définit l'aiguillage pour l'alternance des différents choix if "%error_level%"=="0" goto add_registry_data_1 if "%error_level%"=="2" goto add_registry_data_2 if "%error_level%"=="1" goto add_registry_data_2 cls echo. echo. echo. echo Ce script n'a pas r,ussi . d,tecter la cl, de registre echo n,cessaire . son ex,cution echo. echo Par s,curit,, il va donc s'arr^ter. echo. echo. echo. echo Appuyez sur une touche pour fermer ce script... pause>nul exit
REM --------------------------- REM Alternance de changement des clés de registre
: add_registry_data_1 reg add "%add_registry_key%" /v "%add_registry_value%" /t "%add_registry_type%" /d "%add_registry_data_2%" /f >nul goto body_3
: add_registry_data_2 reg add "%add_registry_key%" /v "%add_registry_value%" /t "%add_registry_type%" /d "%add_registry_data_1%" /f >nul
REM --------------------------- : body_3 REM
REM ________________________________________________________________ REM Queue du script
goto head_1
: exit
REM "%WINDIR%\system32\rundll32.exe" user32.dll,RepaintScreen ne marche pas. REM trouver un autre moyen...
REM Création d'un fichier .vbs REM Ne pas oublier de mettre des ^devant des caractères comme & ou | rem echo Set WSHShell = CreateObject("WScript.Shell") >refresh.vbs rem echo WshShell.SendKeys "{F5}" >>refresh.vbs
REM seul moyen actuellement rem taskkill /f /IM explorer.exe rem start %WinDir%\explorer.exe
REM essayer de trouver des points d'entrée dans user32.dll avec dumpbin du compilateur visual C REM en tapant dumpbin /exports user32.dll ou link /dump /exports user32.dll pour obtenir des noms de fonctions
cls exit
|
|
|
|
Re : Actualisation Refresh.exe
le 11/05/2008 22:23:53

basted
|
Bonjour,
dans le cas general voici comment faire: - recherhcer le PID de l'explorer.exe (enumeration des fenetre et filtrage par type) => HWND - emuler l'envoi de la touche F5: INPUT *input = new INPUT; ZeroMemory(input,sizeof(INPUT)); input->type = INPUT_KEYBOARD; input->ki.wVk = VK_F5; input->ki.dwFlags = 0; int res = SendInput(1, input,sizeof(INPUT)); delete input;
dans ton cas, je crois qu'en fait c'est plus simple HWND hWnd = GetDesktopWindow(); InvalidateRect(hWnd,NULL,NULL);
voici le code complet que j'utilisais a l'epoque: int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) {
/* InvalidateRect(NULL,NULL,TRUE); InvalidateRect(GetDesktopWindow(),NULL,TRUE); */
// send F5 au bureau ne fonctionne pas // SendMessage(GetDesktopWindow(),WM_KEYDOWN,VK_F5,0);
// sendKey(F5) INPUT *input = new INPUT; ZeroMemory(input,sizeof(INPUT)); input->type = INPUT_KEYBOARD; input->ki.wVk = VK_F5; input->ki.dwFlags = 0; int res = SendInput(1, input,sizeof(INPUT)); delete input;
return 0; }
J'espere que ce marche
@++
|
|
|
|
Re : Actualisation Refresh.exe
le 12/05/2008 01:00:44

Celestus
|
Euh... A sa lecture, j'ai peu que ce prog ne fasse que mimer f5, ce que j'ai déjà tenté. Mais j'ai un problème de compilation (j'utilise Dev C++) [cpp] #include <Windows.h> int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow); /* InvalidateRect(NULL,NULL,TRUE); InvalidateRect(GetDesktopWindow(),NULL,TRUE); */ // send F5 au bureau ne fonctionne pas // SendMessage(GetDesktopWindow(),WM_KEYDOWN,VK_F5,0); // sendKey(F5) INPUT *input = new INPUT; ZeroMemory(input,sizeof(INPUT)); input->type = INPUT_KEYBOARD; input->ki.wVk = VK_F5; input->ki.dwFlags = 0; int res = SendInput(1, input,sizeof(INPUT)); delete input; return 0; } [/cpp] Il me met 17 - expected constructor, destructor, or type conversion before '*' token Euh... Ca veut dire quoi ? 
|
|
|
|
Re : Actualisation Refresh.exe
le 19/05/2008 15:28:15

Celestus
|
J'ai utilisé ça #include <windows.h> int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { InvalidateRect(NULL,NULL,TRUE); InvalidateRect(GetDesktopWindow(),NULL,TRUE); return 0; } Ca marche toujours pas, ça fait pareil que F5... Snif...
|
|
|
Classé sous : exe, programme, refresh, quelqu, batch
|
Téléchargements
Logiciels à télécharger sur le même thème :
|
|