begin process at 2010 03 19 18:04:10
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Windows

 > 

Autre

 > 

Actualisation Refresh.exe


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Actualisation Refresh.exe

mercredi 7 mai 2008 à 17:07:45 | Actualisation Refresh.exe

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...
mercredi 7 mai 2008 à 17:31:36 | Re : Actualisation Refresh.exe

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...

@+
jeudi 8 mai 2008 à 03:09:23 | Re : Actualisation Refresh.exe

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/
jeudi 8 mai 2008 à 03:39:25 | Re : Actualisation Refresh.exe

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.
vendredi 9 mai 2008 à 15:23:51 | Re : Actualisation Refresh.exe

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

vendredi 9 mai 2008 à 15:52:08 | Re : Actualisation Refresh.exe

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

vendredi 9 mai 2008 à 18:15:59 | Re : Actualisation Refresh.exe

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


dimanche 11 mai 2008 à 22:23:53 | Re : Actualisation Refresh.exe

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

@++


lundi 12 mai 2008 à 01:00:44 | Re : Actualisation Refresh.exe

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 ?
lundi 19 mai 2008 à 15:28:15 | Re : Actualisation Refresh.exe

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...




1 2

Cette discussion est classée dans : exe, programme, refresh, quelqu, batch


Répondre à ce message

Sujets en rapport avec ce message

DEV C++ -> pr lancer "exe" de mon programme [ par grandebutant ] svp Sur DEV C++, je voudrais lancer un exe de mon programmeAAAauuuuuuuu seeeeeccccouuurrrr!!Merci aux dieux de la programmation !! Programme exe [ par r144 ] Bonjour, je voudrais intégrer dans mon exe un fichier (xxx.template) que je devrais ensuite lire une fois le prog executer.Je pense qu'il faut utilise Faire tourner un .exe indéfiniment [ par julien20vt ] Je fais un programme qui doit rester actif constamment sur un PC:Il ne doit rien faire du tout sauf en cas de remontée d'evenements ou il a différente Pb avec WinExec [ par lysane ] Bonjour,je voudrais lancé un executable depuis mon programme si je code :WinExec ("monprog.exe", SW_SHOW); celà fonctionne mais mon programme prend de system() [ par LordBob ] Bonjour a tous,voilla j'essai de lancer un programme externe au miens, qui est un programme console et qui a me besoin d'argument supplementaire pour Lancer un exécutable à partir d'un programme C [ par yoyo_du_49 ] Est-il possible de lancer un exécutable (.exe) à partir d'un programme C en écrivant une instruction particulière dans le main() ?Exemple:lancer exemp Exportations de fonction EXE --> DLL [ par rclsilver02 ] Voila. Je suis sur un projet qui pourra gérer des modules. Chaque module se trouver dans une DLL et pourra utiliser des fonction du programme principa quel programme pour modifier un exe [ par ata100t ] super neuneu en programmation mais tres curieux, (rester au dos et fichier .bat)je souhaite modifier servudaemon.exe histroire de comprendre comment c Auto modifier un exe [ par LuckyNut ] Salut à tous,Un programme peut-il auto modifier son propre .exe ?Si oui comment (sans utiliser de batch) ?Exemple on lance le programme "revoir.exe", Programme dans un autres comment faire ? O_o [ par oshin ] Bijour,J'ai un autre petit souci, j'ai un programme .exe que j'ai deja mais dont je ne posséde pas la source et je voudrais savoir si il est possible


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,780 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales