[R] $BS_BITMAP et DLL

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Avatar du membre
arrkhan
Niveau 8
Niveau 8
Messages : 528
Enregistré le : sam. 17 nov. 2007 03:30
Status : Hors ligne

[R] $BS_BITMAP et DLL

#1

Message par arrkhan »

Salut à tous,

je bosse sur une appli depuis au moins 2 mois (j'avance pas vite, je suis novice ^^) et pour me simplifier la vie avec les fileinstalls d'icones, j'ai choisi de les placer dans une dll vide, jusque là pas de problème avec les :

Code : Tout sélectionner

Global $icon = -2
GUICtrlCreateIcon("madll.dll", $icon, 64, 10)
mais je n'arrive pas à aller chercher une image bitmap pour l'utiliser :

Code : Tout sélectionner

GUICtrlCreateButton("", 285, 65, 82, 33, $BS_BITMAP)
GUICtrlSetImage(-1, "madll.dll", 0)
auriez vous une piste ?, j'ai parcouru le forum officiel sans succés...
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11784
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

#2

Message par Tlem »

A première vue (D'après la doc), la commande GUICtrlSetImage ne peut extraire que des icônes !

Elle ne vous sera donc d'aucune utilité dans votre cas.

J'ai chercher quelque chose d'équivalent, et je n'ai trouvé que ceci :

Code : Tout sélectionner

#Include <WinAPI.au3>
_WinAPI_LoadBitmap($hInstance, $sBitmap)
La doc n'est pas très explicite quant à sont utilisation, mais bon ...
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
arrkhan
Niveau 8
Niveau 8
Messages : 528
Enregistré le : sam. 17 nov. 2007 03:30
Status : Hors ligne

#3

Message par arrkhan »

arf, tant pis, merci Tlem

l'utilisation d'une dll est quand même bien pratique même si ça augmente un peu le poids de l'exe +160 Ko
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11784
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

#4

Message par Tlem »

Pourquoi l'utilisation du FileInstall vous rebute tant ?

C'est pourtant une fonction bien pratique, qui permet justement de s'affranchir des fichiers additionnels.
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
arrkhan
Niveau 8
Niveau 8
Messages : 528
Enregistré le : sam. 17 nov. 2007 03:30
Status : Hors ligne

#5

Message par arrkhan »

ben j'ai rien contre le fileinstall en particulier, c'est juste que je voulais créer une dll commune pour toutes mes applis sans m'embeter a devoir faire des installs dans @tempdir et des dirremove a tout va
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11784
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

#6

Message par Tlem »

Oui bien sur.

Dans ce cas, 2 solutions :

1 - Décompresser vos fichiers BMP au lancement de votre EXE, et vous ne les supprimés que lors de la fermeture du programme.
Un fichier .au3 additionnel (A rajouter dans les #include) pourrait ce charger de ça grâce à une ou deux fonctions programmée d'avance.
Il vous suffit alors de rajouter ce fichier .au3 à vos autres projets pour ne pas avoir à tous refaire.

2 - Créer un répertoire dans lequel vous placez vos images, et lors de l'utilisation du script, celui-ci va les chercher au bon endroit.
Pour faire propre, un installateur avec Innosetup, et le tour est joué !

Cela dit, il y à sûrement une solution avec la dll, regarder ce que je vous ais indiquer précédemment.
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
arrkhan
Niveau 8
Niveau 8
Messages : 528
Enregistré le : sam. 17 nov. 2007 03:30
Status : Hors ligne

#7

Message par arrkhan »

j'aimais bien l'idee d'une appli totalement portable que propose AutoIt
mais je sens que je vais finalment faire une appli avec install inno et utilisation registre dès que j'aurais appris a me servir d'inno, jusqu'ici je me servais d'Iexpress ^^
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11784
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

#8

Message par Tlem »

Après avoir regarder, je pense que _WinAPI_LoadImage doit correspondre à ce que vous avez besoin.

Voici ce qu'en dit l'aide :

Code : Tout sélectionner

Description ...: Loads an icon, cursor, or bitmap
Syntax.........: _WinAPI_LoadImage($hInstance, $sImage, $iType, $iXDesired, $iYDesired, $iLoad)
et voici le code que vous trouverez dans Winapi.au3 :

Code : Tout sélectionner

Func _WinAPI_LoadImage($hInstance, $sImage, $iType, $iXDesired, $iYDesired, $iLoad)
    Local $aResult, $sType = "int"

    If IsString($sImage) Then $sType = "str"
    $aResult = DllCall("User32.dll", "hwnd", "LoadImage", "hwnd", $hInstance, $sType, $sImage, "int", $iType, "int", $iXDesired, _
            "int", $iYDesired, "int", $iLoad)
    Return $aResult[0]
EndFunc   ;==>_WinAPI_LoadImage
 
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11784
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

#9

Message par Tlem »

Ca y est, après pas mal de recherche, voici votre bonheur : http://www.autoitscript.com/forum/index ... t&p=255162

Je l'ai tester, et ça fonctionne.
Mais je crois toujours qu'il est possible de faire plus simple avec les api.
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11784
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

#10

Message par Tlem »

arrkhan, pouvez-vous nous expliquer comment vous avez créer votre DLL de ressource.

- Logiciel(s) utiliser.
- Procédure(s) et manipulation(s).

Cela pourrait faire partie des tutoriels, car bon nombre d'utilisateurs utilisent des ressources, et ça pourrait être l'occasion d'expliquer comment faire pour mettre ça dans une DLL.

J'ai bien trouvé une procédure avec Dev-C++, mais c'est pas des plus 'simple', donc si vous avez un soft ou autre chose de plus rapide, nous sommes preneur. ;)
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
arrkhan
Niveau 8
Niveau 8
Messages : 528
Enregistré le : sam. 17 nov. 2007 03:30
Status : Hors ligne

#11

Message par arrkhan »

en fait j'avais deja vu sur le net comment faire des dlls avec c++, mais n'etant pas connaisseur du c, j'ai passé mon chemin....

j'ai fait on ne peut plus simple pour la créer:
je suis aller faire un tour dans System32, j'ai choisi la dll la plus légére que je pouvais (une dll creative en fait), j'ai vidé tout ce qu'elle avait dans le bide hormis le "version info" que j'ai adapté à mes besoins, avec ResHack. puis toujours avec ResHack j'ai ajouter mes fichiers d'icones et mes images tout simplement, rien de bien compliqué en somme, une dll n'etant qu'un contener...

j'editerai pour vous mettre une dll vide si vous voulez.

Edit: Voici le lien pour Dl une Dll vide http://www.atpconcept.com/Dll_Vide.dll

j'y ai laissé mes info dans version info, remettez les à votre sauce.

Tlem, serait il possible que tu joigne le code que tu as utilisé pour y arriver ?
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11784
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

#12

Message par Tlem »

arrkhan a écrit :Tlem, serait il possible que tu joigne le code que tu as utilisé pour y arriver ?
Pas de problème, voici même le lien : http://www.codeproject.com/KB/DLL/ResourceOnlyDLL.aspx
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11784
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

#13

Message par Tlem »

Après pas mal de recherches (C'est un sujet qui me passionne aussi ;) ), j'ai trouver bien mieux que le lien ci-dessus.

J'ai donc créer un Tutoriel, et mis en ligne les outils nécessaires.

Je pense que ça en intéressera plus d'un, donc la prochaine étape, pourrait être la création d'un script pour automatiser tout ça. :)
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
arrkhan
Niveau 8
Niveau 8
Messages : 528
Enregistré le : sam. 17 nov. 2007 03:30
Status : Hors ligne

#14

Message par arrkhan »

merci Tlem, mais je parlais du script pour faire fonctionner un bitmap issu d une dll
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11784
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

#15

Message par Tlem »

arrkhan a écrit :merci Tlem, mais je parlais du script pour faire fonctionner un bitmap issu d une dll
Tout à fait, et l'UDF SetBitmapResourceToPicCtrl (Dont j'ai donné le lien plus haut) vous permet justement de récupérer les Bitmaps d'une dll, et de l'attribuer à un contrôle.
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
sylvanie
Niveau 11
Niveau 11
Messages : 1556
Enregistré le : jeu. 26 juil. 2007 21:31
Localisation : Paris
Status : Hors ligne

Re: […]$BS_BITMAP et DLL

#16

Message par sylvanie »

Bonsoir, et merci pour ce lien.
Perso, ça va pas mal révolutionner mes scripts d'utiliser des dll pour syocker les images ^^
Mais il est vrai que le chm côté winapi est maigre niveau illustration.
Merci pour ce lien Tlem
Toi qui cherche à mettre le doigt sur la solution, appuie sur F1.
Répondre