Cherche un codeur C pour màj d'une dll (1h max)

Cherche un codeur C pour màj d'une dll (1h max) - C++ - Programmation

Marsh Posté le 14-02-2007 à 16:29:45    

Salut!
 
Je cherche un volontaire qui pourrait me faire la mise à jour d'une dll. Je m'explique: j'utilise litestep, un programme modulaire. On peu rajouter des dlls pour avoir des fonctions supplémentaires (un peu comme foobar, ou miranda). Or, il y'a un module qui n'est plus supporté par son auteur (l'auteur est injoignable, ou à laché l'affaire).
 
Il s'agit d'un module TRES TRES simple, et les sources sont disponibles ici: http://alphafish.com/?page=article&id=18, Message 0.2 (3 kB) (source).
La mise à jour est possible sans avoir de problemes de licenses.  
 
Je suis conscient que coder une dll sans connaitre le programme peut paraitre bizzare, mais ce n'est pas compliqué. Je pense qu'il faut y plancher dessus pendant 1heure à tout casser, vu la simplicité du module, mais moi je n'y connais pas assez (et pourtant, j'ai essayé). Il y a une 50aines de lignes tout au plus
 
Le module permet d'afficher des boites de dialogue du type: popup. On peut afficher ce que l'on veux dans cette boite, mais il manque le support du retour chariot n/ . C'est ce que je voudrais qu'il supporte :-)
 
Merci beaucoup, au moins de me répondre, et de me donner des orientations, si vous ne pouvez rien faire!
 
@ +

Reply

Marsh Posté le 14-02-2007 à 16:29:45   

Reply

Marsh Posté le 14-02-2007 à 16:44:52    

tu as essaye de mettre des  \r\n a la place de \n ?

Reply

Marsh Posté le 14-02-2007 à 17:21:28    

Oh, j'en ai essayé plein, mais rien ne marche (je viens de le tester ,sans résultats)
 
CJe pense qu'il faut l'implémenter :s

Reply

Marsh Posté le 15-02-2007 à 13:42:05    

Up?
 
SVP, y'en a pas pour beaucoupe de temps, juste un investissement de 1 haures :)

Reply

Marsh Posté le 15-02-2007 à 13:46:20    

Comment tu sais qu'il y en a que pour 1h ?


---------------
Töp of the plöp
Reply

Marsh Posté le 15-02-2007 à 14:23:06    

hé bien j'ai essayé d'apprendre un peu le C (bin site du zero)... J'ai essayé de faire des tests, mais il s'avere que je n'ai aucune experience, et je n'ai pas réussis.
Les sources tiennent en 3 fichiers, mais un seul ne semble etre à modifier. le code est extremement simple 2 ou 3 fonctions apparement, mais je ne sais pas quoi ajouter, ou meme faire.
Je pense qu'il s'agit de quelques lignes bien placées, et voila...
 
Enfin, je ne pense pas que cela soit compliqué... Si quelqu'un au moins pouvais JUSTE jeter un coup d'oeil?
 
Merci

Reply

Marsh Posté le 15-02-2007 à 16:30:21    

J'ai pas trop compris ton pb
 
IMO ce qu'il faut c'est que dans la chaine passée en paramètre tu positionne un marqueur indiquant que tu veux sauter une ligne et dans la fonction bangMessageBox dès que tu trouve ce marqueur tu lui substitue un \n.
 
Example sauf erreur avec # comme marqueur  
 
MessageBox "ari" "error" "chaine1#chaine2" ...

Reply

Marsh Posté le 15-02-2007 à 21:27:55    

Ué, ou alors, donnez moi des indics!
 
@Straffo: oui, ca pourrait etre suffisant:)
Donc, si le caractere "/n" est trouvé, alors sauter une ligne. Comment j'écris ca en C ?
 
Je saurais le recompiler :D
 
Message.H

Code :
  1. #ifndef __MESSAGE_H
  2. #define __MESSAGE_H
  3. #define WIN32_LEAN_AND_MEAN
  4. #pragma warning(disable: 4786) // STL naming warnings
  5. #include <windows.h>
  6. #include <stdlib.h>
  7. #include <string.h>
  8. #include "../ls-b247/lsapi/lsapi.h"
  9. extern "C" {
  10. void bangMessageBox(HWND caller, LPCSTR args);
  11. __declspec( dllexport ) int initModuleEx(HWND parent, HINSTANCE dll, LPCSTR szPath);
  12. __declspec( dllexport ) void quitModule(HINSTANCE dllInst);
  13. }
  14. #endif //__MESSAGE_H


 
 
message.cpp

Code :
  1. #include "message.h"
  2. int initModuleEx(HWND parentWnd, HINSTANCE dllInst, LPCSTR szPath)
  3. {
  4. AddBangCommand("!MessageBox", bangMessageBox);
  5. return 0;
  6. }
  7. void quitModule(HINSTANCE dllInst)
  8. {
  9. RemoveBangCommand("!MessageBox" );
  10. }
  11. void bangMessageBox(HWND caller, LPCSTR args)
  12. {
  13. char token[MAX_LINE_LENGTH], message[MAX_LINE_LENGTH], title[MAX_LINE_LENGTH];
  14. char command[3][MAX_LINE_LENGTH];
  15. LPCSTR nextToken = args;
  16. UINT flags;
  17.     UINT icon;
  18. int result;
  19. GetToken(nextToken, token, &nextToken, true);
  20. if(lstrcmpi(token, "ari" ) == 0) flags = MB_ABORTRETRYIGNORE;
  21. else if(lstrcmpi(token, "ctc" ) == 0) flags = MB_CANCELTRYCONTINUE;
  22.     else if(lstrcmpi(token, "o" ) == 0) flags = MB_OK;
  23. else if(lstrcmpi(token, "oc" ) == 0) flags = MB_OKCANCEL;
  24. else if(lstrcmpi(token, "rc" ) == 0) flags = MB_RETRYCANCEL;
  25. else if(lstrcmpi(token, "yn" ) == 0) flags = MB_YESNO;
  26. else if(lstrcmpi(token, "ync" ) == 0) flags = MB_YESNOCANCEL;
  27. else return;
  28.     GetToken(nextToken, token, &nextToken, true);
  29.     if(lstrcmpi(token, "error" ) == 0) icon = MB_ICONERROR;
  30.     else if(lstrcmpi(token, "warning" ) == 0) icon = MB_ICONWARNING;
  31.     else if(lstrcmpi(token, "info" ) == 0) icon = MB_ICONINFORMATION;
  32.     else if(lstrcmpi(token, "question" ) == 0) icon = MB_ICONQUESTION;
  33.     else icon = 0;
  34.    
  35.     if (icon)
  36.     {
  37.         GetToken(nextToken, token, &nextToken, true);
  38.     }
  39. strcpy(message, token);
  40. GetToken(nextToken, token, &nextToken, true);
  41.     strcpy(title, token);
  42. for(int i=0; i<3; i++)
  43. {
  44.  GetToken(nextToken, token, &nextToken, true);
  45.  strcpy(command[i], token);
  46. }
  47. i=0;
  48. result = MessageBox(caller, message, title,
  49.         flags | icon | MB_TOPMOST | MB_SETFOREGROUND);
  50.     switch(flags)
  51. {
  52. case MB_ABORTRETRYIGNORE:
  53.  if(result==IDRETRY)
  54.   i = 1;
  55.  else if(result==IDIGNORE)
  56.   i = 2;
  57.  break;
  58.     case MB_CANCELTRYCONTINUE:
  59.         if(result==IDTRYAGAIN)
  60.             i = 1;
  61.         else if(result==IDCONTINUE)
  62.             i = 2;
  63.         break;
  64.     case MB_OKCANCEL:
  65.  if(result==IDCANCEL)
  66.   i = 1;
  67.  break;
  68. case MB_RETRYCANCEL:
  69.  if(result==IDCANCEL)
  70.   i = 1;
  71.  break;
  72. case MB_YESNO:
  73.  if(result==IDNO)
  74.   i = 1;
  75.  break;
  76. case MB_YESNOCANCEL:
  77.  if(result==IDNO)
  78.   i = 1;
  79.  else if(result==IDCANCEL)
  80.   i = 2;
  81.  break;
  82. }
  83. LSExecute(caller, command[i], SW_SHOWDEFAULT);
  84. }


 

Reply

Marsh Posté le 15-02-2007 à 21:29:32    

y'ai deux autres fichiers, mais je pensent pas qu'ils soient utiles..

Reply

Marsh Posté le 16-02-2007 à 18:05:44    

Up ?

Reply

Marsh Posté le 16-02-2007 à 18:05:44   

Reply

Marsh Posté le 18-02-2007 à 17:27:41    

up? 2x :'(

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed