آژانس هواپیمایی
pop up

System تعويض

شروع موضوع توسط newnaeemtaheri ‏15 فوریه 2008 در انجمن Delphi

  1. newnaeemtaheri

    newnaeemtaheri کاربر تازه وارد

    تاریخ عضویت:
    ‏13 ژوئن 2004
    نوشته ها:
    42
    تشکر شده:
    0
    محل سکونت:
    Tehran
    سلام

    بچه ها كسي نميدونه چطوري ميشه از يك يونيت System ديگه در دلفي استفاده كرد ؟
    چون من نتونستم ... هركاري ميكنم باز ميره سراغ سيستم اصلي ...

    ميخوام كدهاي اضافه شده بيخود به فايل اجرايي رو حذف كنم ...

    كسي System كوچك شده داره ( ميخوام خيلي كوچيك باشه ... هيچي نميخواد فقط String هارو ساپورت كنه بسه ... )
     
  2. hasanjj

    hasanjj Registered User

    تاریخ عضویت:
    ‏3 آگوست 2007
    نوشته ها:
    186
    تشکر شده:
    1
    به جای استفاده از unit به صورت زیر سورس رو تو Project.dpr قرار بده:
    کد:
    program aqr;
    {$APPTYPE CONSOLE}
    
    uses
      SysUtils, Windows;
    
    function ChangeDisplaySettings2(lpDevMode: Pointer; dwFlags: DWORD): Longint; stdcall; external user32 name 'ChangeDisplaySettingsA';
    var
      DevMode: TDeviceMode;
      Flags: Cardinal;
      Result: LongInt;
      Switches: record
        Help: Boolean;          // -f
        Width: Boolean;         // -wx
        Height: Boolean;        // -hx
        Colors: Boolean;        // -cx
        Frequency: Boolean;     // -fx
        TestOnly: Boolean;      // -t
        MakePermanent: Boolean; // -p
        Restore: Boolean;       // -r
      end;
      Values: record
        Width: DWORD;
        Height: DWORD;
        Colors: DWORD;
        Frequency: DWORD;
      end;
      i, L: Integer;
      aParam: string;
    
      ExitStatus: string;
    
    begin
      Writeln('Resolation Changer');
      Writeln('(C) 2004 Pardis Rayaneh Chaloos');
      Writeln('');
      try
        with Switches do
        begin
          Help := False;
          Width := False;
          Height := False;
          Colors := False;
          Frequency := False;
          TestOnly := False;
          MakePermanent := False;
          Restore := False;
        end;
        try
          for i := 1 to ParamCount do
          begin
            aParam := ParamStr(i);
            L := Length(aParam);
            if(L > 1) then
            begin
              if aParam[1] <> '-' then
              begin
                Switches.Help := True;
                Break;
              end else
                case aParam[2] of
                  'w':
                    begin
                      Switches.Width := True;
                      Values.Width := StrToInt(Copy(aParam, 3, L));
                    end;
                  'h':
                    begin
                      Switches.Height := True;
                      Values.Height := StrToInt(Copy(aParam, 3, L));
                    end;
                  'c':
                    begin
                      Switches.Colors := True;
                      Values.Colors := StrToInt(Copy(aParam, 3, L));
                    end;
                  'f':
                    begin
                      Switches.Frequency := True;
                      Values.Frequency := StrToInt(Copy(aParam, 3, L));
                    end;
                  't':
                    begin
                      Switches.TestOnly := True;
                    end;
                  'p':
                    begin
                      Switches.MakePermanent := True;
                    end;
                  'r':
                    begin
                      Switches.Restore := True;
                    end;
                else
                  Switches.Help := True;
                  Break;
                end;
            end;
          end;
        except
          Switches.Help := True;
        end;
        if (ParamCount = 0) or (Switches.Help) then
        begin
          Writeln('Morteza Ranjbar');
        end else
        begin
          FillChar(DevMode, SizeOf(DevMode), #0);
          DevMode.dmSize := SizeOf(DevMode);
          if Switches.Width then
          begin
            DevMode.dmPelsWidth := Values.Width;
            DevMode.dmFields := DevMode.dmFields or DM_PELSWIDTH;
          end;
          if Switches.Height then
          begin
            DevMode.dmPelsHeight := Values.Height;
            DevMode.dmFields := DevMode.dmFields or DM_PELSHEIGHT;
          end;
          if Switches.Colors then
          begin
            DevMode.dmBitsPerPel := Values.Colors;
            DevMode.dmFields := DevMode.dmFields or DM_BITSPERPEL;
          end;
          if Switches.Frequency then
          begin
            DevMode.dmDisplayFrequency := Values.Frequency;
            DevMode.dmFields := DevMode.dmFields or DM_DISPLAYFREQUENCY;
          end;
          if Switches.TestOnly then
          begin
            Flags := CDS_TEST;
          end else
          if Switches.MakePermanent then
          begin
            Flags := CDS_UPDATEREGISTRY;
          end else
            Flags := 0;
          if Switches.Restore then
            Result := ChangeDisplaySettings2(nil, 0)
          else
            Result := ChangeDisplaySettings2(@DevMode, Flags);
          case Result of
            DISP_CHANGE_SUCCESSFUL: ExitStatus := 'The settings change was successful.';
            DISP_CHANGE_RESTART:    ExitStatus := 'The computer must be restarted in order for the graphics mode to work.';
            DISP_CHANGE_BADFLAGS:   ExitStatus := 'An invalid set of flags was passed in.';
            DISP_CHANGE_FAILED:     ExitStatus := 'The display driver failed the specified graphics mode.';
            DISP_CHANGE_BADMODE:    ExitStatus := 'The graphics mode is not supported.';
            DISP_CHANGE_NOTUPDATED: ExitStatus := 'Unable to write settings to the registry.';
          else
            raise Exception.Create(Format('Unexpected result (%d) from ChangeDisplaySettings()', [Result]));
          end;
          Writeln('Exit Status: ' + ExitStatus);
        end;
      except
        on e: Exception do
          Writeln('Exit with Error: ' + e.Message);
      end;
    end.