fotoğraf makinasından resim çekmek

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
mustafasoy
Üye
Mesajlar: 154
Kayıt: 02 Ağu 2013 05:00
Konum: istanbul
İletişim:

fotoğraf makinasından resim çekmek

Mesaj gönderen mustafasoy »

formda araştırdım ancak net bir sonuca ulaşamadım
şöyle bir yapıya ihtiyacım var
1.fotoğraf makinası pc ye bağlanır
2.fotoğraf makinasından resim çekilir (yada bağlantı kurulursa fotoğraf makinasını webcam gibi kullanarak buttona ile resim çekilir)
3.son çekilen resim image nesnesine aktarılır
webcam üzerinden erişilebiliyor ancak resim kalitesi vasat olduğundan daha profesyonel makinalar üzerinden resim çekmek ve ilgili stok kartına aktarmak amaçlanmaktadır.
--------------------
yada fotoğraf makinası pc ye bağlanır ve makine üzerinden resim çekilir aynı anda fotoğraf makinasının hafıza kartı bilgisayarda görünürse hafıza kartına son eklenen resimde elde edilebilir ancak aynı anda hem fotoğraf çekip hem de disk görünür mü yada erişilebilir mi emin değilim
böyle bir çalışma yapan yada fikir verebilecek arkadaşlarımdan bilgi rica ediyorum
Nasıl ki Soru sorarak öğrendiyseniz , öğrendiklerinizi cevap vererek öğretiniz.
thelvaci
Kıdemli Üye
Mesajlar: 770
Kayıt: 11 Tem 2010 07:17
Konum: Istanbul
İletişim:

Re: fotoğraf makinasından resim çekmek

Mesaj gönderen thelvaci »

Fotoğraf makinanızı bilgisayara USB üzerinden bağladığınızda çok büyük ihtimalle; cihazın belleğine bir depolama aygıtı olarak ulaşabiliyor durumda olursunuz. Çekilen fotoğrafların nereye kayıt edildiğini bulursunuz öncelikle. Ardından o klasörü yeni eklenen dosya/dosyalar için dinlemeye başlarsınız. Bunun için size; FindFirstChangeNotification ve RegisterWaitForSingleObject API'lerini önerebilirim. Bu sayede; resim çekilip fotoğraf makinasında sizin dinlediğiniz klasöre kayıt edildiği anda; sizin haberiniz olur ve gereğini yapabilirsiniz.
Kullanıcı avatarı
mustafasoy
Üye
Mesajlar: 154
Kayıt: 02 Ağu 2013 05:00
Konum: istanbul
İletişim:

Re: fotoğraf makinasından resim çekmek

Mesaj gönderen mustafasoy »

cevap için teşekkürler tuğrul bey , şimdi varolan fotoğraf makinamla(sony steadyshot dsc-w530) denedim ancak fotoğraf makinası bilgisayara bağlandığında usb moduna geçerek fotoğraf çekilmesini engelliyor bu yöntem işe yaramayacak gibi geliyor
Nasıl ki Soru sorarak öğrendiyseniz , öğrendiklerinizi cevap vererek öğretiniz.
thelvaci
Kıdemli Üye
Mesajlar: 770
Kayıt: 11 Tem 2010 07:17
Konum: Istanbul
İletişim:

Re: fotoğraf makinasından resim çekmek

Mesaj gönderen thelvaci »

O zaman iş epey bir karışık hale gelebilir. Bu durumda cihaza bir kamera gibi erişmeye çalışmak yada SDK'ları ile boğuşmak yerine; kullanıcının ilgili stok için bir resim seçmesini sağlayacak bir open dialog ile durumu idare etmeniz hem sizin hem de projeniz için daha faydalı olur sanırım.
Kullanıcı avatarı
freeman35
Admin
Mesajlar: 2381
Kayıt: 12 Haz 2003 04:05
Konum: merkez camii yanı

Re: fotoğraf makinasından resim çekmek

Mesaj gönderen freeman35 »

Twain veya video capture component ları ile cihazdan görüntü alabilirsiniz, ama bu cihazın izin verdiği kadar olacaktır. FullHD çekim yapabilen cihaz 640x480 görüntüye izin verebilir mesela.
Tuğrul beyin tavsiyesi en mantıklısı, siz stok kartına drag & drop özelliği ekleyin, kullanıcı istediği cihazdan fotoğraf, gerekirse video yu stok kartının üzerine sürükleyip bıraksın. Bu sayede hem bir sürü kontrolden, hemde cihaz değişikliği karmaşasından kurtulmuş olursunuz.
Kolay gele
ZAGOR TENAY TÜRK'tür... TÜRK kalacak...
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5

Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
Kullanıcı avatarı
mustafasoy
Üye
Mesajlar: 154
Kayıt: 02 Ağu 2013 05:00
Konum: istanbul
İletişim:

Re: fotoğraf makinasından resim çekmek

Mesaj gönderen mustafasoy »

teşekkürler freeman35 şu andaki yapı dediğiniz gibi işliyor ancak ben sadece biraz daha kullanıcının işini hızlandırabilir miyim diye düşünüyordum
yoksa oldukça hantal bir şekilde çalışıyorlar ya resimlerin isimlerini yanlış tanımlıyorlar yada stoğa yanlış resim bağlıyorlar
fotoğraf makinasını bir tripod üzerine yerleştirip katalog çekimi yapılacak ürünü değiştirip ilgili stoğu tanımlayıp resim al buttonu ile fotoğraf makisına sinyal göndererek resimin çekilerek aktif stoğa işlenmesini düşünüyordum
dediğiniz gibi hadi bunu bir makine için yaptık , herkeste farklı farklı cihazlar olacak , bu durumda daha fazla sorunu beraberinde getirecek, kolay gelsin
Nasıl ki Soru sorarak öğrendiyseniz , öğrendiklerinizi cevap vererek öğretiniz.
Efe
Üye
Mesajlar: 56
Kayıt: 09 Kas 2014 11:14

Re: fotoğraf makinasından resim çekmek

Mesaj gönderen Efe »

Dijital Kameradan Fotograf Çekmek

Usb ile bilgisayara bağlanmış dijital kameradan Windows api(windows image acquisition) ile fotograf çekebiliriz. WIALib_TLB yüklemek için:

Komponent menü den -> import komponent seçeneğinden -> windows image acquisition seçmelisin.

* CheckBox’ı bir ya da birden çok resim çekmek için kullanacaksınız.
* Resimleri LoadFromFile ile image ye yükleyebilirsin.

Kod: Tümünü seç

uses WIALib_TLB;

procedure TForm1.Button1Click(Sender: TObject);
var
  wia:IWia;
  wiad:OleVariant;
  wiax:IWiaDispatchItem;
  i:integer;
  tc1,tc2:cardinal;
begin
  tc1:=GetTickCount;
  wia:=CoWia.Create;
  if ComboBox1.ItemIndex=-1 then
   begin
    for i:=0 to wia.Devices.Count-1 do
      ComboBox1.Items.Add((wia.Devices.Item[i] as IWiaDeviceInfo).Name);
   end
  else
   begin
    wiad:=wia.Devices.Item[ComboBox1.ItemIndex] as IWiaDeviceInfo;
    wiax:=wia.Create(wiad).TakePicture;
    wiax.Transfer('C:\Data\R&D\Delphi\WIA\test.bmp',false);
    tc2:=GetTickCount;
    Image1.Picture.LoadFromFile('C:\Data\R&D\Delphi\WIA\test.bmp');
    Caption:=IntToStr(tc2-tc1)+'ms '+IntToStr(Image1.Picture.Width)+'x'+IntToStr(Image1.Picture.Height);
   end;
end;

Efe
Üye
Mesajlar: 56
Kayıt: 09 Kas 2014 11:14

Re: fotoğraf makinasından resim çekmek

Mesaj gönderen Efe »

WIALib_TLB.pas ile yapılmış daha gelişmiş bir örnek açıklamalar almanca ama çözebilirsiniz.

Kod: Tümünü seç

unit dlgWIA;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls,WIALib_TLB, ExtCtrls, ComCtrls;

type
  TfrmWIA = class(TForm)
    PageControl1: TPageControl;
    tsLog: TTabSheet;
    tsImage: TTabSheet;
    memLog: TMemo;
    imgImage: TImage;
    btnGo: TButton;
    StatusBar1: TStatusBar;
    procedure btnGoClick(Sender: TObject);
  private
    procedure Log(S: string); overload;
    procedure LogNewLine;
    procedure Log(S: string; Params: array of const); overload;
    procedure LogSeparator;
    procedure OutputItem(Item: IWiaDispatchItem; Name: string);
    procedure OutputDevice(Device: IWiaDeviceInfo; Name: string);
    function GetTempFileName: string;
    function GetDesktopFileName: string;
    function ExecuteFile(FileName: string): Boolean;
  public
  end;

var
  frmWIA: TfrmWIA;

implementation

uses JPEG, shlobj, ActiveX, ShellAPI;

{$R *.dfm}

// ------------------------------------------------
//  WIA-Aktion
// ------------------------------------------------
procedure TfrmWIA.btnGoClick(Sender: TObject);
var
  I: Integer;

  Wia: IWia;
  Device: IWiaDeviceInfo;
  DeviceItem: IWiaDispatchItem;
  ImageItem: IWiaDispatchItem;
  Coll: ICollection;

  FileName: string;
  JPEG: TJPEGImage;
begin
  imgImage.Picture:= nil;
  LogSeparator;

  // Einstiegspunkt in WIA  
  Wia:= CoWia.Create;

  // Anzahl Geräte
  Log('Anzahl Geräte: %d', [Wia.Devices.Count]);
  LogNewLine;

  // Infos über alle Geräte ausgeben
  for I:= 0 to Wia.Devices.Count-1 do
  begin
    Device:= WIA.Devices.Item[I] as IWiaDeviceInfo;
    OutputDevice(Device, 'Nr. ' + IntToStr(I+1));
  end;

  // Mit einem Gerät kommunizieren
  if Wia.Devices.Count > 0 then
  begin
    Log('Verbinden mit Gerät...');

    // Mit erstem Gerät verbinden
    Device:= WIA.Devices.Item[0] as IWiaDeviceInfo;
    DeviceItem:= Device.Create;

    // Alternativ Benutzer ein Gerät interaktiv wählen lassen
    // DeviceItem:= WIA.Create(EmptyParam);

    // Infos über Gerät und darauf befindliche Bilder anzeigen
    OutputItem(DeviceItem, 'Gewähltes Gerät');
    for I:= 0 to DeviceItem.Children.Count - 1 do
    begin
      ImageItem:= DeviceItem.Children.Item[I] as IWiaDispatchItem;
      OutputItem(ImageItem, 'Bild Nr. ' + IntToStr(I+1));
    end;

    // Ein Bild per UI besorgen
    // Alternativ mit TakePicture
    LogSeparator;
    Log('Bild von Gerät besorgen...');
    Coll:= DeviceItem.GetItemsFromUI(SingleImage, MaximizeQuality);

    if Coll.Count > 0 then
    begin
      ImageItem:= Coll.Item[0] as IWiaDispatchItem;
      OutputItem(ImageItem, 'Ausgewähltes Bild');

      // Bild in temporärer Datei auf Festplatte speichern
      FileName:= GetTempFileName;
      ImageItem.Transfer(FileName, False);

      // Bild anzeigen
      imgImage.Picture.Bitmap.LoadFromFile(FileName);

      // Temporäre Datei löschen
      DeleteFile(FileName);

      // Bild als JPEG auf Desktop speichern
      FileName:= GetDesktopFileName;
      Jpeg:= TJPEGImage.Create;
      try
        JPEG.Assign(imgImage.Picture.Graphic);
        JPEG.SaveToFile(FileName);
      finally
        FreeAndNil(JPEG);
      end;

      // JPEG öffnen
      ExecuteFile(FileName);
    end;
  end;
end;

// ------------------------------------------------
//  WIA-Objekte in Memo ausgeben
// ------------------------------------------------
procedure TfrmWIA.OutputDevice(Device: IWiaDeviceInfo; Name: string);
begin
    Log('Gerät %s hat folgende Eigenschaften:', [Name]);

    Log('Name: %s',  [Device.Name]);
    Log('ID: %s',  [Device.Id]);
    Log('Typ: %s',  [Device.type_]);
    Log('Port: %s',  [Device.Port]);
    Log('Hersteller: %s',  [Device.Manufacturer]);
    Log('UIClsid: %s',  [Device.UIClsid]);

    LogNewLine;
end;

procedure TfrmWIA.OutputItem(Item: IWiaDispatchItem; Name: string);
begin
    Log('Item %s hat folgende Eigenschaften:', [Name]);

    Log('Name: %s',  [Item.Name]);
    Log('Fullname: %s',  [Item.FullName]);
    Log('Typ: %s',  [Item.ItemType]);
    Log('Breite: %d',  [Item.Width]);
    Log('Höhe: %d',  [Item.Height]);
    Log('Bildbreite: %d',  [Item.PictureWidth]);
    Log('Bildhöhe: %d',  [Item.PictureHeight]);
    Log('Verbindungsstatus: %s',  [Item.ConnectStatus]);
    Log('Anzahl Kinder: %d',  [Item.Children.Count]);
    Log('Zeit: %s',  [Item.Time]);
    Log('Firmware: %s',  [Item.FirmwareVersion]);

    LogNewLine;
end;

// ------------------------------------------------
//  Text in Memo ausgeben
// ------------------------------------------------

procedure TfrmWIA.Log(S: string);
begin
  memLog.Lines.Add(S);
end;

procedure TfrmWIA.Log(S: string; Params: array of const);
begin
  Log(Format(S, Params));
end;

procedure TfrmWIA.LogNewLine;
begin
  Log('');
end;

procedure TfrmWIA.LogSeparator;
begin
  LogNewLine;
  Log('----------------------------------------------------------');
  LogNewLine;
end;

// ------------------------------------------------
//  Dateinamen ermitteln
// ------------------------------------------------
function WinGetTempFileName(prefix: string): string;
var
  TempDir: String;
  Buffer: String;
  Size: Integer;
begin
  SetLength(prefix, 3);

  Size := Windows.GetTempPath(0, nil);
  SetLength(TempDir, Size);
  Windows.GetTempPath(Size, PChar(TempDir));

  SetLength( Buffer, MAX_PATH-14 );
  Windows.GetTempFileName(PChar(TempDir), PChar(Prefix), 0, PChar(Buffer));

  Result:= StrPas(PAnsiChar(Buffer));
end;

function GetShellDirectory(ID: Integer): string;
var
  S: string;
  ItemIDList: PItemIDList;
  SystemHeap: IMalloc;
begin
  Result := EmptyStr;

  if SHGetSpecialFolderLocation(Forms.Application.Handle, ID, ItemIDList) = NOERROR then
  begin
    try
      SetLength(S, MAX_PATH);
      if SHGetPathFromIDList(ItemIDList, PChar(S)) then
      begin
        Result:= Copy(S, 1, Pos(#0, S) - 1);
      end;
    finally
      // Von der Shell reservierten Speicher freigeben
      if SHGetMalloc(SystemHeap) = NOERROR then
      begin
        SystemHeap.Free(ItemIDList);
      end;
    end;
  end;
end;

function TfrmWIA.GetTempFileName: string;
begin
  Result:= WinGetTempFileName('WIA');
end;

function TfrmWIA.GetDesktopFileName: string;
begin
  Result:= GetShellDirectory(CSIDL_DESKTOP);
  Result:= IncludeTrailingPathDelimiter(Result);
  Result:= Result + 'WIA_Demo.jpeg';
end;

// ------------------------------------------------
//  Datei ausführen
// ------------------------------------------------
function TfrmWIA.ExecuteFile(FileName: string): Boolean;
var
  Res: Integer;
begin
  Res:= ShellExecute(Forms.Application.Handle, nil, PChar(FileName), nil, nil, SW_SHOWNORMAL);
  Result:= Res > 32;
end;

end. 

________________________________________
Datei: dlgWIA.dfm 
________________________________________

object frmWIA: TfrmWIA
  Width = 870
  Height = 640
  Caption = 'WIA'
  Position = poScreenCenter
  object PageControl1: TPageControl
    ActivePage = tsLog
    Align = alClient
    TabOrder = 0
    object tsLog: TTabSheet
      Caption = 'Log'
      object memLog: TMemo
        Align = alClient
        ScrollBars = ssVertical
        TabOrder = 0
      end
    end
    object tsImage: TTabSheet
      Caption = 'Bild'
      ImageIndex = 1
      object imgImage: TImage
        Align = alClient
        Center = True
        Proportional = True
        Stretch = True
      end
    end
  end
  object btnGo: TButton
    Left = 728
    Top = 4
    Width = 123
    Height = 49
    Anchors = [akTop, akRight]
    Caption = 'Go!'
    TabOrder = 1
    OnClick = btnGoClick
  end
  object StatusBar1: TStatusBar
  end
end
________________________________________
ikra
Üye
Mesajlar: 901
Kayıt: 28 Nis 2005 01:26
Konum: Simdilik Topragin Üstü

Re: fotoğraf makinasından resim çekmek

Mesaj gönderen ikra »

Bu da Türkcesi

Kod: Tümünü seç

unit dlgWIA;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls,WIALib_TLB, ExtCtrls, ComCtrls;

type
  TfrmWIA = class(TForm)
    PageControl1: TPageControl;
    tsLog: TTabSheet;
    tsImage: TTabSheet;
    memLog: TMemo;
    imgImage: TImage;
    btnGo: TButton;
    StatusBar1: TStatusBar;
    procedure btnGoClick(Sender: TObject);
  private
    procedure Log(S: string); overload;
    procedure LogNewLine;
    procedure Log(S: string; Params: array of const); overload;
    procedure LogSeparator;
    procedure OutputItem(Item: IWiaDispatchItem; Name: string);
    procedure OutputDevice(Device: IWiaDeviceInfo; Name: string);
    function GetTempFileName: string;
    function GetDesktopFileName: string;
    function ExecuteFile(FileName: string): Boolean;
  public
  end;

var
  frmWIA: TfrmWIA;

implementation

uses JPEG, shlobj, ActiveX, ShellAPI;

{$R *.dfm}

// ------------------------------------------------
//  WIA-Aktion
// ------------------------------------------------
procedure TfrmWIA.btnGoClick(Sender: TObject);
var
  I: Integer;

  Wia: IWia;
  Device: IWiaDeviceInfo;
  DeviceItem: IWiaDispatchItem;
  ImageItem: IWiaDispatchItem;
  Coll: ICollection;

  FileName: string;
  JPEG: TJPEGImage;
begin
  imgImage.Picture:= nil;
  LogSeparator;

  // Einstiegspunkt in WIA  
  Wia:= CoWia.Create;

  // Cihaz sayisi
  Log('Cihaz sayisi: %d', [Wia.Devices.Count]);
  LogNewLine;

  // Tüm cihazlarin bilgilerini göster
  for I:= 0 to Wia.Devices.Count-1 do
  begin
    Device:= WIA.Devices.Item[I] as IWiaDeviceInfo;
    OutputDevice(Device, 'Nr. ' + IntToStr(I+1));
  end;

  // Cihaz ile haberles
  if Wia.Devices.Count > 0 then
  begin
    Log('Cihaz ile baglanti kur...');

    // Ilk cihaz ile baglanti kur
    Device:= WIA.Devices.Item[0] as IWiaDeviceInfo;
    DeviceItem:= Device.Create;

    // Alternatif olarak kullaniciya cihaz secimi yaptir
    // DeviceItem:= WIA.Create(EmptyParam);

    // Cihaz ve üzerindeki resimlerin bilgileri
    OutputItem(DeviceItem, 'Secilmis Cihaz');
    for I:= 0 to DeviceItem.Children.Count - 1 do
    begin
      ImageItem:= DeviceItem.Children.Item[I] as IWiaDispatchItem;
      OutputItem(ImageItem, 'Bild Nr. ' + IntToStr(I+1));
    end;

    // UI ile resim elde et
    // Alternatif olarak TakePicture ile
    LogSeparator;
    Log('Cihazdan resim cek...');
    Coll:= DeviceItem.GetItemsFromUI(SingleImage, MaximizeQuality);

    if Coll.Count > 0 then
    begin
      ImageItem:= Coll.Item[0] as IWiaDispatchItem;
      OutputItem(ImageItem, 'Ausgewähltes Bild');

      // Resmi gecici olarak Harddisk üzerine kayit et
      FileName:= GetTempFileName;
      ImageItem.Transfer(FileName, False);

      // Resmi göster
      imgImage.Picture.Bitmap.LoadFromFile(FileName);

      // Gecici resim dosyasini sil
      DeleteFile(FileName);

      // Resmi JPEG olarak desktop üzerine kayit et
      FileName:= GetDesktopFileName;
      Jpeg:= TJPEGImage.Create;
      try
        JPEG.Assign(imgImage.Picture.Graphic);
        JPEG.SaveToFile(FileName);
      finally
        FreeAndNil(JPEG);
      end;

      // JPEG'yi ac
      ExecuteFile(FileName);
    end;
  end;
end;

// ------------------------------------------------
//  WIA-Objelerini Memo'da göster
// ------------------------------------------------
procedure TfrmWIA.OutputDevice(Device: IWiaDeviceInfo; Name: string);
begin
    Log('Cihaz: %s'in özellikleri sunlardir:', [Name]);

    Log('Name: %s',  [Device.Name]);
    Log('ID: %s',  [Device.Id]);
    Log('Typ: %s',  [Device.type_]);
    Log('Port: %s',  [Device.Port]);
    Log('Üretici: %s',  [Device.Manufacturer]);
    Log('UIClsid: %s',  [Device.UIClsid]);

    LogNewLine;
end;

procedure TfrmWIA.OutputItem(Item: IWiaDispatchItem; Name: string);
begin
    Log('Item %s'in özellikleri sunlardir:', [Name]);

    Log('Name: %s',  [Item.Name]);
    Log('Fullname: %s',  [Item.FullName]);
    Log('Typ: %s',  [Item.ItemType]);
    Log('Genislik: %d',  [Item.Width]);
    Log('Yükseklik: %d',  [Item.Height]);
    Log('Resim genisligi: %d',  [Item.PictureWidth]);
    Log('Resim yüksekligi: %d',  [Item.PictureHeight]);
    Log('Baglanti durumu: %s',  [Item.ConnectStatus]);
    Log('Alt üye sayisi: %d',  [Item.Children.Count]);
    Log('Zaman: %s',  [Item.Time]);
    Log('Firmware: %s',  [Item.FirmwareVersion]);

    LogNewLine;
end;

// ------------------------------------------------
//  Text'i Memo'da göster
// ------------------------------------------------

procedure TfrmWIA.Log(S: string);
begin
  memLog.Lines.Add(S);
end;

procedure TfrmWIA.Log(S: string; Params: array of const);
begin
  Log(Format(S, Params));
end;

procedure TfrmWIA.LogNewLine;
begin
  Log('');
end;

procedure TfrmWIA.LogSeparator;
begin
  LogNewLine;
  Log('----------------------------------------------------------');
  LogNewLine;
end;

// ------------------------------------------------
//  Dosya isimlerini elde et
// ------------------------------------------------
function WinGetTempFileName(prefix: string): string;
var
  TempDir: String;
  Buffer: String;
  Size: Integer;
begin
  SetLength(prefix, 3);

  Size := Windows.GetTempPath(0, nil);
  SetLength(TempDir, Size);
  Windows.GetTempPath(Size, PChar(TempDir));

  SetLength( Buffer, MAX_PATH-14 );
  Windows.GetTempFileName(PChar(TempDir), PChar(Prefix), 0, PChar(Buffer));

  Result:= StrPas(PAnsiChar(Buffer));
end;

function GetShellDirectory(ID: Integer): string;
var
  S: string;
  ItemIDList: PItemIDList;
  SystemHeap: IMalloc;
begin
  Result := EmptyStr;

  if SHGetSpecialFolderLocation(Forms.Application.Handle, ID, ItemIDList) = NOERROR then
  begin
    try
      SetLength(S, MAX_PATH);
      if SHGetPathFromIDList(ItemIDList, PChar(S)) then
      begin
        Result:= Copy(S, 1, Pos(#0, S) - 1);
      end;
    finally
      // Shell üzerinden ayirilmis olan bellegi bosalt
      if SHGetMalloc(SystemHeap) = NOERROR then
      begin
        SystemHeap.Free(ItemIDList);
      end;
    end;
  end;
end;

function TfrmWIA.GetTempFileName: string;
begin
  Result:= WinGetTempFileName('WIA');
end;

function TfrmWIA.GetDesktopFileName: string;
begin
  Result:= GetShellDirectory(CSIDL_DESKTOP);
  Result:= IncludeTrailingPathDelimiter(Result);
  Result:= Result + 'WIA_Demo.jpeg';
end;

// ------------------------------------------------
//  Dosyayi calistir
// ------------------------------------------------
function TfrmWIA.ExecuteFile(FileName: string): Boolean;
var
  Res: Integer;
begin
  Res:= ShellExecute(Forms.Application.Handle, nil, PChar(FileName), nil, nil, SW_SHOWNORMAL);
  Result:= Res > 32;
end;

end. 

________________________________________
Datei: dlgWIA.dfm 
________________________________________

object frmWIA: TfrmWIA
  Width = 870
  Height = 640
  Caption = 'WIA'
  Position = poScreenCenter
  object PageControl1: TPageControl
    ActivePage = tsLog
    Align = alClient
    TabOrder = 0
    object tsLog: TTabSheet
      Caption = 'Log'
      object memLog: TMemo
        Align = alClient
        ScrollBars = ssVertical
        TabOrder = 0
      end
    end
    object tsImage: TTabSheet
      Caption = 'Bild'
      ImageIndex = 1
      object imgImage: TImage
        Align = alClient
        Center = True
        Proportional = True
        Stretch = True
      end
    end
  end
  object btnGo: TButton
    Left = 728
    Top = 4
    Width = 123
    Height = 49
    Anchors = [akTop, akRight]
    Caption = 'Go!'
    TabOrder = 1
    OnClick = btnGoClick
  end
  object StatusBar1: TStatusBar
  end
end
kıdemsiz üye
Cevapla