全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:3822
推到 Plurk!
推到 Facebook!

如何撰寫 WIN XP 平台 的掃描器程式

答題得分者是:shunchia63
esp_pzj
初階會員


發表:32
回覆:70
積分:40
註冊:2007-02-09

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-12-18 11:24:14 IP:59.120.xxx.xxx 訂閱
各位大大請給我指點:

我有參考過這篇文章:
在Delphi中控制掃描器
http://delphi.ktop.com.tw/board.php?cid=30&fid=73&tid=22370


不過只有WIN9X 及 WIN 2000 可使用
不知怎麼 選寫 WIN XP上的 描器程式

文中提到
---- Windows9X在其附件中提供了“映象”可選件,該附件是採用OCX構件來控制掃描器的,共有imgEdit、imgAnntool、imgScan、imgAdmin 四個,有這四個構件基本上就能完全控制掃描器。在Delphi中的用法如下:

在Windows9x中選擇安裝“映象”。(在控制面板中選擇“添加/刪除程式”,再選擇“安裝Windows”,點擊“附件”核取方塊,然後從“詳細資料”按鈕中可以找到“映象”)

不懂 此段的意思。
感謝 各位大大指點
------
學藝不精 謝多多指教
shunchia63
高階會員


發表:26
回覆:141
積分:198
註冊:2007-05-22

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-12-18 12:14:28 IP:61.62.xxx.xxx 訂閱


InXP 沒有內建此控件


另一個做法 COPY Win2K System32 Path

2003/06/19 下午 12:05 128,784 IMAGEHLP.DLL
2001/07/06 下午 08:41 569,344 imagr5.dll
2001/07/06 下午 06:44 544,768 imagx5.dll
2001/07/07 上午 12:24 283,920 ImagXpr5.dll
2000/01/10 下午 12:00 32,768 imeshare.dll
2000/01/10 下午 08:00 102,672 imgadmin.ocx
2000/01/10 下午 08:00 60,688 imgcmn.dll
2003/06/19 下午 12:05 306,448 imgedit.ocx
2000/01/10 下午 08:00 117,520 imgscan.ocx
2000/01/10 下午 08:00 13,584 imgshl.dll
2000/01/10 下午 08:00 107,792 imgthumb.ocx
2002/08/29 上午 09:33 30,720 imgutil.dll
2003/06/19 下午 12:05 96,528 imm32.dll
2000/01/10 下午 08:00 522,512 kodakimg.exe
2000/01/10 下午 08:00 71,440 kodakprv.exe
2007/12/18 下午 12:02 0 list.txt
2003/06/19 下午 12:05 444,176 oieng400.dll


至 XP System32 Path

Regsvr32 imgedit.ocx


in delphi import TypeLib即可看到此控件 (N年前,那時後用Win2K用來顯示TIF ,那知 XP發行後就 沒此套件....真的有點@@..)






For Scan 我機乎都用TWAIN 控制 Delphi 有人也也有開發好此功能


EZTWAIN MultiTWAIN.pas 找一下應該可以很容易使用<---提供Scan函式


有介面的 LLI LLO 很早期的套件 (很容易使用,包含影像處理 <--有點像 小畫家跟Scaner整合 ) 用到現在沒有OS限制 <--要錢的









===================引 用 esp_pzj 文 章===================
各位大大請給我指點:

我有參考過這篇文章:
在Delphi中控制掃描器
http://delphi.ktop.com.tw/board.php?cid=30&fid=73&tid=22370


不過只有WIN9X 及 WIN 2000 可使用
不知怎麼 選寫 WIN XP上的 描器程式

文中提到
---- Windows9X在其附件中提供了“映象”可選件,該附件是採用OCX構件來控制掃描器的,共有imgEdit、imgAnntool、imgScan、imgAdmin 四個,有這四個構件基本上就能完全控制掃描器。在Delphi中的用法如下:

在Windows9x中選擇安裝“映象”。(在控制面板中選擇“添加/刪除程式”,再選擇“安裝Windows”,點擊“附件”核取方塊,然後從“詳細資料”按鈕中可以找到“映象”)

不懂 此段的意思。
感謝 各位大大指點
編輯記錄
shunchia63 重新編輯於 2007-12-18 12:16:07, 註解 無‧
esp_pzj
初階會員


發表:32
回覆:70
積分:40
註冊:2007-02-09

發送簡訊給我
#3 引用回覆 回覆 發表時間:2007-12-18 16:06:17 IP:59.120.xxx.xxx 訂閱
感謝 shunchia63大大:提供我 寶貴的議建。

我使用了EZTWAIN 出現下列的 錯誤我要如何解決:

我只有 使用 TWAIN_SelectImageSource(Handle);


損壞的影像
應用程式或dll ..\eztwain.dll為不正確的windows 影像。請再檢查一遍您的安裝磁片。


[code delphi]
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls,EzTwain;

type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
TWAIN_SelectImageSource(Handle);
end;

end.

[/code]

感謝指點
------
學藝不精 謝多多指教
編輯記錄
esp_pzj 重新編輯於 2007-12-18 16:07:04, 註解 無‧
shunchia63
高階會員


發表:26
回覆:141
積分:198
註冊:2007-05-22

發送簡訊給我
#4 引用回覆 回覆 發表時間:2007-12-18 16:39:29 IP:61.62.xxx.xxx 訂閱
Sorry 我找不到   Samplecode 

我的寫法大致如下

//掛一個Callback 等待掃完通知
procedure CallbackFxn(CurDib: THandle; index: Integer); stdcall; forward;



1.FormCreate()


TWAIN_RegisterCallback(CallbackFxn);




procedure CallbackFxn(CurDib: THandle; index: Integer); stdcall;
var TestDib:integer;
Image1:TImage;
J:TJPEGIMAGE;

dwIndex,readint:integer;
begin

Image1 := TImage.Create(nil);
TestDib := TWAIN_GetDib(index);
CopyDibIntoImage(TestDib, Image1);
TWAIN_FreeNative(TestDib);
TestDib := 0;
J := TJpegImage.Create();
J.Assign(Image1.Picture.Bitmap);
if index mod 2 = 0 then //正面
J.SaveToFile("正面")
else //背面
J.SaveToFile("背面");
J.Free;
Image1.free;
end;



//GoGoGo
procedure doSacn;
var i:integer;
ScanNum : integer;
begin

//// TWAIN_SelectImageSource(0);
TWAIN_IsAvailable;
hdib := TWAIN_AcquireNative(0, 0);
ScanNum := TWAIN_GetNumDibs;

end;
esp_pzj
初階會員


發表:32
回覆:70
積分:40
註冊:2007-02-09

發送簡訊給我
#5 引用回覆 回覆 發表時間:2007-12-19 08:54:38 IP:59.120.xxx.xxx 訂閱
再次感謝shunchia63的指導,
小弟我技不如人,看不懂shunchia63的方式,
請各位大大高手,給小弟更多指點.....

還在努力 try try try try............



===================引 用 shunchia63 文 章===================
Sorry 我找不到 Samplecode

我的寫法大致如下

//掛一個Callback 等待掃完通知
procedure CallbackFxn(CurDib: THandle; index: Integer); stdcall; forward;



1.FormCreate()


TWAIN_RegisterCallback(CallbackFxn);




procedure CallbackFxn(CurDib: THandle; index: Integer); stdcall;
var TestDib:integer;
Image1:TImage;
J:TJPEGIMAGE;

dwIndex,readint:integer;
begin

Image1 := TImage.Create(nil);
TestDib := TWAIN_GetDib(index);
CopyDibIntoImage(TestDib, Image1);
TWAIN_FreeNative(TestDib);
TestDib := 0;
J := TJpegImage.Create();
J.Assign(Image1.Picture.Bitmap);
if index mod 2 = 0 then //正面
J.SaveToFile("正面")
else //背面
J.SaveToFile("背面");
J.Free;
Image1.free;
end;



//GoGoGo
procedure doSacn;
var i:integer;
ScanNum : integer;
begin

//// TWAIN_SelectImageSource(0);
TWAIN_IsAvailable;
hdib := TWAIN_AcquireNative(0, 0);
ScanNum := TWAIN_GetNumDibs;

end;
------
學藝不精 謝多多指教
esp_pzj
初階會員


發表:32
回覆:70
積分:40
註冊:2007-02-09

發送簡訊給我
#6 引用回覆 回覆 發表時間:2007-12-19 10:16:58 IP:59.120.xxx.xxx 訂閱
我解決我的問題了..

我參考這篇分享文章
http://delphi.ktop.com.tw/board.php?cid=31&fid=77&tid=74424

使用 TAcquireImage 元件就可簡單的呼叫掃描機 的掃描程式 進行 掃描存檔

感謝 shunchia63 大大及各位大大幫忙
------
學藝不精 謝多多指教
編輯記錄
esp_pzj 重新編輯於 2007-12-19 10:17:40, 註解 無‧
pceyes
尊榮會員


發表:70
回覆:657
積分:1140
註冊:2003-03-13

發送簡訊給我
#7 引用回覆 回覆 發表時間:2007-12-19 17:58:52 IP:220.141.xxx.xxx 訂閱
沒想到xp還可以用 : )
------
努力會更接近成功
esp_pzj
初階會員


發表:32
回覆:70
積分:40
註冊:2007-02-09

發送簡訊給我
#8 引用回覆 回覆 發表時間:2007-12-20 08:41:03 IP:59.120.xxx.xxx 訂閱
pceyes 大大 感謝你的分享

我只試用了開起掃描器的取的圖片的功能。
再次感謝你的分享


===================引 用 pceyes 文 章===================
沒想到xp還可以用 : )
------
學藝不精 謝多多指教
系統時間:2017-10-23 19:37:32
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!