IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

API, COM et SDKs Delphi Discussion :

Taille plus petite sans compresseur ?


Sujet :

API, COM et SDKs Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Inactif
    Inscrit en
    Février 2007
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 46
    Par défaut Taille plus petite sans compresseur ?
    comment créer une Application Delphi "avec des fenaitres" avec une taille minimale sans utiliser
    ni compresseur ni de désactiver l'option de compilation de delphi qui determine
    les *.dll à incorporer!
    d'autre part; peut ont nié l'unité "FORMS" ?

  2. #2
    Membre Expert
    Avatar de Clorish
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 474
    Par défaut
    Oui tout a fait
    MAis je te souhaite bien du courrage ....
    Ce qu'il faut faire c'est supprimer toutes les classes graphiques de Delphi et te frapper toute la partie graphique via les API Windows (CreateWindow entre autre )

    Une solution tres efficace mais qui ne semble pas te correspondre serait d'utiliser les paquets de conception.
    Seul les bpl VCL et RTL sont a distribuer en plus de ton applciation (pres de 3 Mo de memoire) mais qui reduisent ton exe a quelques 10aine de ko seulement.
    LE deploiement de ces paquets se fait en une fois pour toutes les applciatons.
    Une fois installé sur la machine, les application n'incorporerons plus ce code.

    Mais si tu nous parlais un peu plus du pourquoi de cette contrainte ?

  3. #3
    Inactif
    Inscrit en
    Février 2007
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 46
    Par défaut Salut;
    Mais si tu nous parlais un peu plus du pourquoi de cette contrainte ?
    je cherche à faire des exécutables propres; dans le sens où :
    les ressources peuvent êtres éxploités différaments;
    les objets visuels se crées et se traites d'une manière différente qu'aux standards;
    et en plus dans le but de que l'application survive au tant
    que le programmeur ne soit pas déssu du produit commercialisé aprés la livraisent au public qui peut l'exploiter et peut faire autre choses!!
    veux dire une protèction du programme contre "les patches/cracks/.."

    ce si est trés difficile; mais porte mieux qu'aux dommages qui peut le développeur le subire !!

  4. #4
    Inactif
    Inscrit en
    Février 2007
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 46
    Par défaut Salut;
    MAis je te souhaite bien du courrage ....
    Ce qu'il faut faire c'est supprimer toutes les classes graphiques de Delphi et te frapper toute la partie graphique via les API Windows (CreateWindow entre autre )
    je crois qu'enfin j'ai réaliser un p'tit code qui semble attractif à faire des éfforts pour le developper prochaînnement;

    l'unité à utiliser :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
     
    unit bsd_api;
    interface
    uses
      Windows,
      Messages;
     
    procedure InitApplication;
    procedure ExecuteApplication;
    procedure FinalizeApplication;
    implementation
    var
      WndClass: TWndClass;
      HAppInstance: integer;
      Msg: TMsg;
      MainForm, Button1, Edit1: HWND;  
      //
      Bitmap: TBitmap;
    procedure Button1Click;
    var
      EditText: array[0..255] of char;
    begin
      GetWindowText(Edit1, EditText, 256);
     
      // Display message box
      MessageBox(MainForm,
        PChar('You typed: ' + EditText),
        'Message',
        MB_APPLMODAL OR MB_ICONINFORMATION OR MB_OK);
    end;
     
    procedure CreateControls;
    var
      hControlFont: HFONT;
      lfControl: TLogFont;
    begin
      // Create all controls (Edit1, Button1)
     
      // See the help file for a description of the style flags
      Edit1 := CreateWindowEx(WS_EX_CLIENTEDGE, // Extended style
        'EDIT', // EDIT creates an edit box
        'Edit1', // Name of window - also the text that will be in it
        WS_CHILD OR WS_VISIBLE OR ES_AUTOHSCROLL OR ES_NOHIDESEL, // style flags
        8, 16, 160, 21, // Position and size
        MainForm, // Parent window
        0, // Menu - none because it's an edit box(!)
        HAppInstance, // Application instance
        nil); // No creation data
     
      Button1 := CreateWindow('BUTTON', // BUTTON creates an button, obviously
        'Show Message', // Name of window - also the text that will be in it
        WS_CHILD OR WS_VISIBLE OR BS_PUSHBUTTON OR BS_TEXT, // style flags
        8, 40, 96, 25, // Position and size
        MainForm, // Parent window
        0, // Menu - none because it's a button
        HAppInstance, // Application instance
        nil); // No creation data
     
      // Set up the font
      { Calculate font height from point size - they are not the same thing!
        The first parameter of MulDiv is the point size. }
     
    //  lfControl.lfHeight   := -MulDiv(8, GetDeviceCaps(GetDC(0), LOGPIXELSY), 96);
      lfControl.lfFaceName       :='Tahoma';
      lfControl.lfHeight         :=13;
      lfControl.lfWeight         :=0;
      lfControl.lfItalic         :=0;
      lfControl.lfUnderline      :=0;
      lfControl.lfPitchAndFamily :=0;
      lfControl.lfStrikeOut      :=0;
      lfControl.lfOutPrecision   :=0;
      lfControl.lfEscapement     :=0;
      lfControl.lfOrientation    :=0;
      lfControl.lfCharSet        :=0;
      lfControl.lfWidth          :=0;
      lfControl.lfClipPrecision  :=0;
      lfControl.lfQuality        :=0;  
     
      // Create the font
      hControlFont := CreateFontIndirect(lfControl);
     
      // Tell controls to set their fonts
      SendMessage(Edit1, WM_SETFONT, hControlFont, 1);
      SendMessage(Button1, WM_SETFONT, hControlFont, 1);
    end;
     
    function WindowProc(hwnd: HWND; uMsg: UINT; wParam: WPARAM; lParam: LPARAM):
      LRESULT; stdcall;
    begin
      // This is the function Windows calls when a message is sent to the application
     
      case uMsg of // Check which message was sent
        WM_DESTROY: PostQuitMessage(0); // Otherwise app will continue to run
        // ...
        // Handle any other messages here
        WM_ACTIVATE: SetFocus(Edit1);
        WM_COMMAND:
          begin
            Result := 0; // Default return value for this message
            if lParam = Button1 then
              case wParam of
                BN_CLICKED: Button1Click; // Button was clicked
              else Result := DefWindowProc(hwnd, uMsg, wParam, lParam);
              end; // case wNotifyCode of
          end; // case: WM_COMMAND
        // ...
     
        // Use default message processing
        else Result := DefWindowProc(hwnd, uMsg, wParam, lParam);
      end;
    end;
     
    procedure InitApplication;
    begin
      HAppInstance := HInstance;
     
      // Set up window class
      with WndClass do begin
        Style := 0;
        lpfnWndProc := @WindowProc; // See function above
        cbClsExtra := 0; // no extra class memory
        cbWndExtra := 0; // no extra window memory
        hInstance := HAppInstance; // application instance
        hIcon := 0; // use default icon
        hCursor := LoadCursor(0, IDC_ARROW); // use arrow cursor
        hbrBackground := COLOR_WINDOW; // standard window colour
        lpszMenuName := nil; // no menu resource
        lpszClassName := 'TMainForm';
      end; // with WndClass
     
      Windows.RegisterClass(WndClass); // Don't use Delphi's version of RegisterClass
     
      // Create the window
      MainForm := CreateWindow('TMainForm',
        'Delphi API Demo', // window caption
        WS_OVERLAPPEDWINDOW, // standard window style
        CW_USEDEFAULT, CW_USEDEFAULT, // default position
        320, 200, // size
        0, // no owner window
        0, // no menu
        hInstance, // application instance
        nil);
     
      CreateControls; // See above
    end;
     
    procedure ExecuteApplication;//(Const Form:HWND)
    begin
      ShowWindow(MainForm, SW_SHOWMAXIMIZED); // make window visible
      // Set up message loop
      while GetMessage(Msg, 0, 0, 0) <> BOOL(FALSE) do begin
        TranslateMessage(Msg);
        DispatchMessage(Msg);
      end;
    end;
     
    procedure FinalizeApplication;
    begin
      // Clean up code...
     
      // I'm not sure these are actually needed
      DestroyWindow(Edit1);
      DestroyWindow(Button1);
    end;
     
    initialization
    InitApplication;
     
    finalization
    FinalizeApplication;
     
    end.
    le programme *.dpr

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    uses bsd_api;
    begin
      ExecuteApplication;
    end.
    mais tu doit reconnaitre la taille manifique trés attractive aprés compilation
    qui ne déppasse pas : [16,0 KO] !!?

    merci pour l'idée; a+

  5. #5
    Expert éminent
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Par défaut
    c'est le moment de sortir le lien vers ce vieux projet VCL Light
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 07/11/2014, 09h20
  2. Réponses: 0
    Dernier message: 20/12/2012, 16h16
  3. [XL-2003] Trier du plus petit au plus grand sans doublon
    Par JulienLeno dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 30/08/2011, 23h03
  4. Réponses: 26
    Dernier message: 30/05/2010, 19h29
  5. Réponses: 2
    Dernier message: 07/12/2006, 19h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo