Takıldığım Birkaç Nokta!

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
Shou
Üye
Mesajlar: 260
Kayıt: 26 Ağu 2011 02:00

Takıldığım Birkaç Nokta!

Mesaj gönderen Shou »

1- Program açarken mesela Ip : "31.79.210.11" bu ip adresi baglantısı varmı yokmu nasıl kontrol ettirttiririm?
2- Bilgisayardan print bastıgımızda oto masaüstünde resimi nasıl kaydettirebilirim?
3- Programla bilgisayarın cpuid'sini nasıl aldırırım google'da birçok döküman mevcut fakat çalışmıyor çoğusu..
4- Şimdi ben "var.bizimip = ("31.79.210.11");" gibi nasıl birşey yapabılırım? mesela
ben 6,7 yere ip adresi giriyorum programda bunları tek bi sefer girebilmem için nasıl bir fonksiyon yapmam lazım?

şimdiden teşekkürler yardım eden etmeyen herkeze..
esrehmaan

Re: Takıldığım Birkaç Nokta!

Mesaj gönderen esrehmaan »

2. soruna cevap vereyim

Kod: Tümünü seç

procedure TForm1.Button1Click(Sender: TObject);
var
  DCDesk: HDC;
begin
  DCDesk:=GetWindowDC(GetDesktopWindow);
  BitBlt(image1.Canvas.Handle, 0, 0, Screen.Width, Screen.Height,DCDesk, 0, 0,SRCCOPY);
  ReleaseDC(GetDesktopWindow, DCDesk);
  image1.Picture.SaveToFile('Screen.jpg');
end;
diğer soruları anlamadım :S... kolay gelsin
Kullanıcı avatarı
Shou
Üye
Mesajlar: 260
Kayıt: 26 Ağu 2011 02:00

Re: Takıldığım Birkaç Nokta!

Mesaj gönderen Shou »

@esrehmaan hocam ;

Çok güzel yapmışsınızda şöyle yapamazmıyız (program açıkken "print screen" tuşuna basarlarsa = resim1.jpg , resim2.jpg , resim3.jpg , 4, 5 , 6 ,7 ,8 , diye gitsin masa üstüne kaydetsın + tam ekran görüntüsü alamazmıyız?

diğerleri anlamadım demişsin açıklayayım iyice ;

1- Windows görev yöneticisinde "Kullanılan Cpu : %5" mesela bunu delphi 7 de nasıl gösteririZ? Örnek : Label da : cpu kullanımı : %5 , %7 gibi ?
2- Bilgisayarın cpu idsini nasıl alabilirim örnek : http://www.lohninger.com/cpuid.html // burada kaynak kodları var ama projesi çalışmıyor nedense?

şimdiden teşekkür ettim + iletişim adresini pm atarsan sevinirim.
esrehmaan

Re: Takıldığım Birkaç Nokta!

Mesaj gönderen esrehmaan »

tabi yapabilirsin...

Kod: Tümünü seç

Using PrintScr to print a form

type
  TForm1 = class(TForm)
    Button1: TButton;
    Label1: TLabel;
    Label2: TLabel;
  private
    { Private declarations }
    procedure wmHotkey( Var msg: TWMHotkey );
      message WM_HOTKEY;
    procedure WMActivate( Var msg: TWMActivate );
      message WM_ACTIVATE;
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure tform1.wmHotkey( Var msg: TWMHotkey );
begin
  if msg.HotKey = IDHOT_SNAPWINDOW Then
    label1.caption := 'PrintScr pressed';
    // would print form from here
end;

procedure TForm1.WMActivate( Var msg: TWMActivate );
begin
  If msg.Active <> WA_INACTIVE Then
    RegisterHotkey( Handle, IDHOT_SNAPWINDOW, 0, VK_SNAPSHOT )
  Else begin
    UnRegisterHotkey( Handle, IDHOT_SNAPWINDOW );
    label1.caption := '';
  end;
  inherited;
end;



Cpu kullanımı ile ilgili olarak

Kod: Tümünü seç

const
  SystemBasicInformation = 0;
  SystemPerformanceInformation = 2;
  SystemTimeInformation = 3;

type
  TPDWord = ^DWORD;

  TSystem_Basic_Information = packed record
    dwUnknown1: DWORD;
    uKeMaximumIncrement: ULONG;
    uPageSize: ULONG;
    uMmNumberOfPhysicalPages: ULONG;
    uMmLowestPhysicalPage: ULONG;
    uMmHighestPhysicalPage: ULONG;
    uAllocationGranularity: ULONG;
    pLowestUserAddress: Pointer;
    pMmHighestUserAddress: Pointer;
    uKeActiveProcessors: ULONG;
    bKeNumberProcessors: byte;
    bUnknown2: byte;
    wUnknown3: word;
  end;

type
  TSystem_Performance_Information = packed record
    liIdleTime: LARGE_INTEGER; {LARGE_INTEGER}
    dwSpare: array[0..75] of DWORD;
  end;

type
  TSystem_Time_Information = packed record
    liKeBootTime: LARGE_INTEGER;
    liKeSystemTime: LARGE_INTEGER;
    liExpTimeZoneBias: LARGE_INTEGER;
    uCurrentTimeZoneId: ULONG;
    dwReserved: DWORD;
  end;

var
  NtQuerySystemInformation: function(infoClass: DWORD;
    buffer: Pointer;
    bufSize: DWORD;
    returnSize: TPDword): DWORD; stdcall = nil;


  liOldIdleTime: LARGE_INTEGER = ();
  liOldSystemTime: LARGE_INTEGER = ();

function Li2Double(x: LARGE_INTEGER): Double;
begin
  Result := x.HighPart * 4.294967296E9 + x.LowPart
end;

procedure GetCPUUsage;
var
  SysBaseInfo: TSystem_Basic_Information;
  SysPerfInfo: TSystem_Performance_Information;
  SysTimeInfo: TSystem_Time_Information;
  status: Longint; {long}
  dbSystemTime: Double;
  dbIdleTime: Double;

  bLoopAborted : boolean;

begin
  if @NtQuerySystemInformation = nil then
    NtQuerySystemInformation := GetProcAddress(GetModuleHandle('ntdll.dll'),
      'NtQuerySystemInformation');

  // get number of processors in the system

  status := NtQuerySystemInformation(SystemBasicInformation, @SysBaseInfo, SizeOf(SysBaseInfo), nil);
  if status <> 0 then Exit;

  // Show some information
  with SysBaseInfo do
  begin
      ShowMessage(
      Format('uKeMaximumIncrement: %d'#13'uPageSize: %d'#13+
      'uMmNumberOfPhysicalPages: %d'+#13+'uMmLowestPhysicalPage: %d'+#13+
      'uMmHighestPhysicalPage: %d'+#13+'uAllocationGranularity: %d'#13+
      'uKeActiveProcessors: %d'#13'bKeNumberProcessors: %d',
      [uKeMaximumIncrement, uPageSize, uMmNumberOfPhysicalPages,
      uMmLowestPhysicalPage, uMmHighestPhysicalPage, uAllocationGranularity,
      uKeActiveProcessors, bKeNumberProcessors]));
  end;


  bLoopAborted := False;

  while not bLoopAborted do
  begin

    // get new system time
    status := NtQuerySystemInformation(SystemTimeInformation, @SysTimeInfo, SizeOf(SysTimeInfo), 0);
    if status <> 0 then Exit;

    // get new CPU's idle time
    status := NtQuerySystemInformation(SystemPerformanceInformation, @SysPerfInfo, SizeOf(SysPerfInfo), nil);
    if status <> 0 then Exit;

    // if it's a first call - skip it
    if (liOldIdleTime.QuadPart <> 0) then
    begin

      // CurrentValue = NewValue - OldValue
      dbIdleTime := Li2Double(SysPerfInfo.liIdleTime) - Li2Double(liOldIdleTime);
      dbSystemTime := Li2Double(SysTimeInfo.liKeSystemTime) - Li2Double(liOldSystemTime);

      // CurrentCpuIdle = IdleTime / SystemTime
      dbIdleTime := dbIdleTime / dbSystemTime;

      // CurrentCpuUsage% = 100 - (CurrentCpuIdle * 100) / NumberOfProcessors
      dbIdleTime := 100.0 - dbIdleTime * 100.0 / SysBaseInfo.bKeNumberProcessors + 0.5;

      // Show Percentage
      Form1.Label1.Caption := FormatFloat('CPU Usage: 0.0 %',dbIdleTime);

      Application.ProcessMessages;

      // Abort if user pressed ESC or Application is terminated
      bLoopAborted := (GetKeyState(VK_ESCAPE) and 128 = 128) or Application.Terminated;

    end;

    // store new CPU's idle and system time
    liOldIdleTime := SysPerfInfo.liIdleTime;
    liOldSystemTime := SysTimeInfo.liKeSystemTime;

    // wait one second
    Sleep(1000);
  end;
end;


procedure TForm1.Button1Click(Sender: TObject);
begin
  GetCPUUsage
end;

kolay gelsin kodları denemedim ancak sana fikir vermesi açısından yolladım inşallah işine yarar... kolay gelsin
Kullanıcı avatarı
Shou
Üye
Mesajlar: 260
Kayıt: 26 Ağu 2011 02:00

Re: Takıldığım Birkaç Nokta!

Mesaj gönderen Shou »

Kod: Tümünü seç

procedure TForm1.Button1Click(Sender: TObject);
Const
{$j+} i : Integer = 0; {$j-}
var
  DCDesk: HDC;
begin
  DCDesk:=GetWindowDC(GetDesktopWindow);
  BitBlt(image1.Canvas.Handle, 0, 0, Screen.Width, Screen.Height,DCDesk, 0, 0,SRCCOPY);
  ReleaseDC(GetDesktopWindow, DCDesk);
  image1.Picture.SaveToFile('D:\G-KANIT-' +inttostr(i)+'.JPG'); // D: ' ye kaydet.
  inc(i);
end;
hocam ben bunu yaptımda tek eksigim "print screen" tuşuna basınca kaydetsin istiyorum forum gözükmesin hide olsun print screen basınca kaydetsin istiyorum senin verdigin kodları çalıştıramadım?
esrehmaan

Re: Takıldığım Birkaç Nokta!

Mesaj gönderen esrehmaan »

Kod: Tümünü seç

procedure TForm1.FormKeyUp(Sender: TObject; var Key: Word;
  Shift: TShiftState);
  const
{$j+} i : Integer = 0; {$j-}
var
  DCDesk: HDC;
begin
 if Key = VK_SNAPSHOT then begin


begin
  DCDesk:=GetWindowDC(GetDesktopWindow);
  BitBlt(image1.Canvas.Handle, 0, 0, Screen.Width, Screen.Height,DCDesk, 0, 0,SRCCOPY);
  ReleaseDC(GetDesktopWindow, DCDesk);
  image1.Picture.SaveToFile(inttostr(i)+'.JPG'); // D: ' ye kaydet.
  inc(i);
end;

  end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  KeyPreview := True;
end;

bunu denedim oluyor bi göz atar mısın tekrardan
Kullanıcı avatarı
Shou
Üye
Mesajlar: 260
Kayıt: 26 Ağu 2011 02:00

Re: Takıldığım Birkaç Nokta!

Mesaj gönderen Shou »

Kod: Tümünü seç

TForm1.FormKeyUp
kısmı hata veriyor abi yaptığını proje olarak uplarmısın bakayım bi nedense bende olmuyor :S
Cevapla