برگزیده های پرشین تولز

System تعويض

newnaeemtaheri

کاربر تازه وارد
تاریخ عضویت
13 ژوئن 2004
نوشته‌ها
44
لایک‌ها
1
سن
39
محل سکونت
Tehran
سلام

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

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

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

hasanjj

کاربر تازه وارد
تاریخ عضویت
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.
 
بالا