Application de type console (addin)

Soyez le premier à donner votre avis sur cette source.

Vue 6 801 fois - Téléchargée 733 fois

Description

Bonjour,

suite au post
http://www.vbfrance.com/infomsg_RENVOYER-TEXTE-VERS-CMD_873583.aspx

dans lequel draluorg souhaitais manipuler la console depuis laquelle son appli avait été lancée,
j'ai codé ce petit addin.

Comme je lui ai dit, il suffit d'appeler :

WriteConsole GetStdHandle(STD_OUTPUT_HANDLE), sBuffer, Len(sBuffer), ByVal 0&, ByVal 0&

pour ecrire sBuffer dans la console.

si on utilise une console crée par AllocConsole, pas de probleme, mais si nous souhaitons pouvoir écrire dans une fenetre console existante, il faut modifier le type d'executable que l'on génère.

dans le fichier http://www.mvps.org/st-software/Code/all.zip qu'un de mes pair MVP a réalisé, un outil qui permet de faire ce genre de transformation.

Il suffit même de changer les arguments passés à Link.exe, EBArtSoft nous indique :
"... suffit d'ajouter "/subsystem:console" à la chaine passé a link.exe"

dans le code http://www.vbfrance.com/code.aspx?ID=19357 de EBArtSoft, le nécessaire pour pouvoir enchainer la compilation et la transformation de l'Exe

je n'ai donc aucun mérite, puisque je n'ai fait que fusionner deux codes qui ne sont pas de moi....

Source / Exemple :


Private Declare Function WriteFile Lib "kernel32" (ByVal hFile As Long, ByVal lpBuffer As String, ByVal nNumberOfBytesToWrite As Long, lpNumberOfBytesWritten As Long, lpOverlapped As Any) As Long
Private Const STD_OUTPUT_HANDLE As Long = -11&

Private Declare Function GetStdHandle Lib "kernel32.dll" (ByVal nStdHandle As Long) As Long

Private Sub Main()
Dim hConsole As Long
Dim sBuffer As String
Dim lpNumberOfBytesWritten As Long
    sBuffer = "ComputerName : " & Environ$("ComputerName") & vbNewLine & _
              "UserName : " & Environ$("UserName")
    WriteFile GetStdHandle(STD_OUTPUT_HANDLE), sBuffer, Len(sBuffer), lpNumberOfBytesWritten, ByVal 0&
End Sub

Conclusion :


Cet Addin ajoute un bouton dans le Menu 'Projet'

renommez le fichier .dl_ en .dll
et .ex_ en .exe

un exemple est présent dans le repertoire Sample

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
62
Merci pour tout, EB
Messages postés
4531
Date d'inscription
dimanche 29 septembre 2002
Statut
Modérateur
Dernière intervention
22 avril 2019
8
Il faut ce referer à ce document : http://download.microsoft.com/download/9/c/5/9c5b2167-8017-4bae-9fde-d599bac8184a/pecoff_v8.doc

Ce n'est pas très digest mais tout y est

@+
Messages postés
625
Date d'inscription
vendredi 23 avril 2004
Statut
Membre
Dernière intervention
25 novembre 2010

Salut

Interessante votre discution ^^

Quels sont les api qui permettent de lire et d'agir sur ces structures ? J'ai tapé le nom des structures dans google et y a vraiment rien :(
Messages postés
4531
Date d'inscription
dimanche 29 septembre 2002
Statut
Modérateur
Dernière intervention
22 avril 2019
8
Si on peut utiliser les structures PE_FILE_HEADER + PE_OTIONAL_HEADER et tester/changer uniquement le flag PE_OTIONAL_HEADER.SubSystem. Passer de Windows GUI à Windows CUI (de 1 à 2)

@+
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
62
Exact.... j'ai lu trop vite :$

y'a pas un moyen plus sur que d'attendre de tomber sur un 02 :S

je veux dire, si notre appli est deja en console, un user peu dégourdit pourrait vouloir en refaire une console, et modifier un autre 02 en 03 ...
Afficher les 12 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.