Passage sous linux difficile...
Fermé
Antoineprog
Messages postés
12
Date d'inscription
dimanche 26 avril 2015
Statut
Membre
Dernière intervention
10 mai 2015
-
Modifié par jipicy le 9/05/2015 à 19:59
ElementW Messages postés 4816 Date d'inscription dimanche 12 juin 2011 Statut Contributeur Dernière intervention 5 octobre 2021 - 10 mai 2015 à 15:19
ElementW Messages postés 4816 Date d'inscription dimanche 12 juin 2011 Statut Contributeur Dernière intervention 5 octobre 2021 - 10 mai 2015 à 15:19
A voir également:
- Passage sous linux difficile...
- Passage qwerty azerty - Guide
- Linux mint 32 bits - Télécharger - Systèmes d'exploitation
- Diskinternals linux reader - Télécharger - Stockage
- Linux live usb creator - Télécharger - Outils Internet
- Quel linux choisir - Guide
4 réponses
Antoineprog
Messages postés
12
Date d'inscription
dimanche 26 avril 2015
Statut
Membre
Dernière intervention
10 mai 2015
2
Modifié par Antoineprog le 9/05/2015 à 20:07
Modifié par Antoineprog le 9/05/2015 à 20:07
(merci à jipicy pour la mise en forme, je ne savais pas comment faire :3 ) ! :D
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 841
9 mai 2015 à 22:06
9 mai 2015 à 22:06
Ben, il va falloir que tu refasses tout...
Ton programme est propre à Windows. puisqu'il se base sur des bibliothèques de Windows.
Ton programme est propre à Windows. puisqu'il se base sur des bibliothèques de Windows.
Antoineprog
Messages postés
12
Date d'inscription
dimanche 26 avril 2015
Statut
Membre
Dernière intervention
10 mai 2015
2
9 mai 2015 à 22:11
9 mai 2015 à 22:11
D'accord...
Et, est ce que tu connais un équivalent à ces fonctions sous linux ?
Spécialement : hwnd, ShowWindow(), et BringWindowToTop().
Merci :)
Et, est ce que tu connais un équivalent à ces fonctions sous linux ?
Spécialement : hwnd, ShowWindow(), et BringWindowToTop().
Merci :)
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 841
9 mai 2015 à 23:25
9 mai 2015 à 23:25
Ces fonctions graphiques ne sont pas propres au kernel mais à l'interface graphique (KDE, GTK+, ...).
Tu es sur Ubuntu, donc plutôt GTK2+.
hwnd, n'est pas une fonction mais représente le handle d'une fenêtre
ShowWindow() est à remplacer par gtk_widget_show().
Pour le reste, je ne sais pas trop. De toute façon, il te faut apprendre la programmation GTK2+ de zéro, vu que beaucoup de choses changent.
L'avantage, c'est que la nouvelle mouture de ton programme (sur GTK2+) fonctionnera aussi sur Windows ;-).
Tu es sur Ubuntu, donc plutôt GTK2+.
hwnd, n'est pas une fonction mais représente le handle d'une fenêtre
ShowWindow() est à remplacer par gtk_widget_show().
Pour le reste, je ne sais pas trop. De toute façon, il te faut apprendre la programmation GTK2+ de zéro, vu que beaucoup de choses changent.
L'avantage, c'est que la nouvelle mouture de ton programme (sur GTK2+) fonctionnera aussi sur Windows ;-).
Antoineprog
Messages postés
12
Date d'inscription
dimanche 26 avril 2015
Statut
Membre
Dernière intervention
10 mai 2015
2
10 mai 2015 à 01:16
10 mai 2015 à 01:16
Non en fait, je vais passer sous lubuntu, donc LXKDE.
J'ai cherché des tutos pour la programmation KDE mais je n'en ai trouvé aucun, une idée ? :p
J'ai cherché des tutos pour la programmation KDE mais je n'en ai trouvé aucun, une idée ? :p
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 841
>
Antoineprog
Messages postés
12
Date d'inscription
dimanche 26 avril 2015
Statut
Membre
Dernière intervention
10 mai 2015
10 mai 2015 à 01:35
10 mai 2015 à 01:35
Ce n'est pas LXKDE sous lbuntu, mais LXDE, qui n'a rien à voir avec KDE.
LXDE utilise GTK+. Si tu veux KDE, utilise plutôt Kubuntu.
LXDE utilise GTK+. Si tu veux KDE, utilise plutôt Kubuntu.
Antoineprog
Messages postés
12
Date d'inscription
dimanche 26 avril 2015
Statut
Membre
Dernière intervention
10 mai 2015
2
10 mai 2015 à 11:04
10 mai 2015 à 11:04
Ah d'accord ! Merci beaucoup :)
Donc il faut que j'apprenne à coder sous GTK+. Est ce que tu aurais quelques tutos ou conseils sous la main s'il te plait ? Je m'y connais pas trop en codage hors windows...
Donc il faut que j'apprenne à coder sous GTK+. Est ce que tu aurais quelques tutos ou conseils sous la main s'il te plait ? Je m'y connais pas trop en codage hors windows...
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 841
10 mai 2015 à 13:12
10 mai 2015 à 13:12
Voici un ensemble de tuto : https://gtk.developpez.com/cours/
Et plus particulièrement :
https://gtk.developpez.com/cours/gtk2/?page=page_2
Bon courage ;-)
Et plus particulièrement :
https://gtk.developpez.com/cours/gtk2/?page=page_2
Bon courage ;-)
ElementW
Messages postés
4816
Date d'inscription
dimanche 12 juin 2011
Statut
Contributeur
Dernière intervention
5 octobre 2021
1 228
10 mai 2015 à 15:19
10 mai 2015 à 15:19
'lut, pour compléter la réponse de fiddy, ce code est très spécifique à Windows et il faut tout refaire.
Mais ici les fonctions utilisées agissent sur d'autres processus, et les bibliothèques d'interface (GTK, QT, wx, ...) ne permettent pas ça car elles sont chargées de s'occuper de leur propres fenêtres, et c'est tout.
Ce qu'il faut utiliser, ce sont les fonctions manipulant directement X11, soit utiliser
Avec xlib:
Pour énumérer les fenêtres, il faut se servir de XQueryTree avec comme paramètre
Et ici, tout devient incertain: en fait, X11 étant conçu pour être utilisé en réseau, il se peut qu'effectivement aucun processus local ne soit associé à une fenêtre. Heureusement dans la plupart des cas la propriété
PID dont tu peux avoir toutes les infos via le dossier
Bref, c'est pas facile a faire, et c'est volontaire: on ne touche pas aux autres fenêtres normalement (sur ce point, Windows et son API est un vrai trou de sécurité).
Mais ici les fonctions utilisées agissent sur d'autres processus, et les bibliothèques d'interface (GTK, QT, wx, ...) ne permettent pas ça car elles sont chargées de s'occuper de leur propres fenêtres, et c'est tout.
Ce qu'il faut utiliser, ce sont les fonctions manipulant directement X11, soit utiliser
xcbou
xlib.
Avec xlib:
Pour énumérer les fenêtres, il faut se servir de XQueryTree avec comme paramètre
wla fenêtre racine de l'affichage (Display) actuel obtenu via la macro XRootWindow. Je ne crois pas qu'il liste toutes les fenêtres; il faut donc s'attendre à faire un usage récursif de ces fonctions.
Et ici, tout devient incertain: en fait, X11 étant conçu pour être utilisé en réseau, il se peut qu'effectivement aucun processus local ne soit associé à une fenêtre. Heureusement dans la plupart des cas la propriété
_NET_WM_PIDde la fenêtre contient le PID du processus.
PID dont tu peux avoir toutes les infos via le dossier
/proc/[PID]/et ses différents fichiers virtuels, dont
exesur lequel il faut effectuer un
readlinkpour retrouver l'emplacement de l'exécutable.
Bref, c'est pas facile a faire, et c'est volontaire: on ne touche pas aux autres fenêtres normalement (sur ce point, Windows et son API est un vrai trou de sécurité).