CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[C] application en arriere-plan

-MasterLink-
-MasterLink-
Niveau 6
03 octobre 2007 à 20:52:41

Salut

Je bosse en ce moment sur une petite application windows en C, histoire de gérer un peu mieu ce qui n´est pas SDL.
Donc j´aimerais faire tourner un executable en arriere plan, dans le but de faire un raccourcis clavier, mais je bloque sur un point.

Je ne sais pas du tout comment m´y prendre pour enlever la fenetre, donc pour que l´appli tourne juste dans les processus.
J´ais bien vu 2-3 petits indices sur google mais je ne vois pas bien comment les exploiter, ni si ils sont exact.
Certains parlaient de hook ou SetWindowsHookEx() (je ne sais toujours pas exactement ce que c´est), d´autre de priorité idle etc..

Voila donc si quelqu´un pouvait expliquer comment s´y prendre ce serait sympa

Merci

dnob700
dnob700
Niveau 10
03 octobre 2007 à 21:43:42

Pour faire un raccourci clavier, genre pour lancer ton programme ?
Si c´est le cas, il ne faut surtout pas écrire un programme pour faire ça. Ça serait très vite un bordel ignoble si chaque appli qui veut un raccourci clavier devait faire tourner un hook en tâche de fond.

Le shell de windows a déjà ce genre de possibilité. Globalement, tu crée une icône et tu lui attibue un raccourci clavier

-MasterLink-
-MasterLink-
Niveau 6
04 octobre 2007 à 21:43:52

En fait je fait ce programme dans le but de savoir me servir un minimum de windows.h , donc sans utiliser le shell. D´ou la question pour rendre le programme en tache de fond.
J´avais pensé a faire quelque chose sans interface graphique, mais la console reste une fenetre, donc ne marche pas non plus comme je l´esperais

dnob700
dnob700
Niveau 10
04 octobre 2007 à 23:03:53

Pour ne pas avoir d´interface graphique, tu peut sois utiliser une aplication win32 (celle avec une fonction WinMain) et n´appeler aucune fonction d´entrée sortie et ne pas créer de fenêtre (il faut que le sous système soit régler sur "Windows" dans les paramètrer du linker de ton appli si tu es sous visual studio).

Ou alors tu peut cacher la fenêtre du terminal avec un appel du type
HideWindow(GetConsoleWindow(NULL))

Je ne garantie aucun des deux appels, mais ça doit ressembler à ça.

MAis ce n´est pas terrible car tu ne peut lus interargir avec le systèmecar tu n´a pas de boucle demessage.

Il vaut mieux créer une fenêtre de type Message Handler (c´est une fenêtre sans interface qui ne fait que recevoir des messages). La MSDN détaille pas mal de processus de création de fenêtre (ainsiq que l´exemple standard de VC++ quand il crée un nouveau projet, il y a juste une constante à modifier.

pareil i tu as besoin de plus de détail, je peut chercher dans des vieux projets où j´utilisais ça pour te retrouver la bonne syntaxe.

Pour diminuer ta priorité (mais ce n´est pas très utile si tu as une boucle de message) tu as les fonction
SetProcessPriority et SetThreadPriority (un truc comme ça) avec encore des constantes à allez chercher dans la MSDN et GetCurrentProcessId ou quelque chose comme ça pour connaitre le nom de ton process.

bon, tout ça n´est pas très précis, mais ce sont des pistes, et si la MSDN ne répond pas à tes questions, demande des précision, et j´essayerais de t´en trouver.

-MasterLink-
-MasterLink-
Niveau 6
06 octobre 2007 à 12:37:37

Niquel sa marche, t´avais presque tout juste :p)

Il fallait créer un nouveau projet windows application, et chercher dans le main.cpp la ligne qui affichait le terminal ( ShowWindow (hwnd, nFunsterStil); ), et la remplacer par ShowWindow (hwnd, SW_HIDE);

Merci en tout cas

Sous forums
  • Aide à l'achat Mac
  • Création de Jeux
  • Linux
  • Création de sites web
  • Programmation
  • Internet
  • Steam Deck
  • Macintosh
  • Hardware
La vidéo du moment