Autor Beitrag
stephantom
Hält's aus hier
Beiträge: 5

Win 98SE, Win XP, Win 2003
D2005
BeitragVerfasst: So 01.05.05 21:06 
Hallo Leute!

Nachdem ich schon sehr oft Hilfe auf dieser Seite durch Mitlesen gefunden habe, hoffe ich, dass ich auch in meinem speziellen Fall nette Hilfe erhalte :wink:

Ich habe mir ein Programm gebastelt, das mir via TWAIN ein Bild einscannt und speichert (oder auch ausdruckt, also als Kopierer quasi). Nun sollte das Programm noch etwas automatischer werden und auch auf die Kopfdrücke auf dem Scanner reagieren.

Meiner Meinung nach müsste das so in der Art geschehen:

a) im idealfall: man kann direkt diese Ereignisse abfangen und darauf reagieren (dann müsste aber der Windows-interne Dialog [was wollen sie tun?] unterdrückt werden)

b) alternativ: es ist möglich das programm der liste der programme für die verarbeitung dieser Befehle hinzuzufügen. Dann kann es dort als Standardprogramm gewählt werden und das Programm wird mit einem speziellen Parameter gestartet.

/edit: Hierzu habe ich das hier in der MSDN gefunden. Leider blicke ich da nicht ganz durch, ob das auch mit Delphi zu schaffen ist, zumal das API für c/c++ geschrieben wurde. Die sti.dll gibts ja auf allen Systemen, kann man die auch mit delphi verwenden?

Gibt es Hoffung für mein Problem?
stephantom Threadstarter
Hält's aus hier
Beiträge: 5

Win 98SE, Win XP, Win 2003
D2005
BeitragVerfasst: Mo 02.05.05 15:41 
Von Seiten Microsoft findet sich außerdem noch eine genaue Beschreibung des APIs hier. Leider ist der Beispielcode (wie gesagt) in einer Sprache die ich nicht verstehe:

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
// call STI to find out whether this was launched by STI
HRESULT hres;
hres = StiCreateInstance(GetModuleHandle(NULL), STI_VERSION, &pSti,NULL);
hres = pSti->RegisterLaunchApplication(L"MyApp",szModulePathW) ;
// was this a STI launch???
// call STI-API and get the device name, event and event code
WCHAR   szDeviceName[65];
WCHAR   szEventName[65];
char    ActualDeviceName [256];
DWORD   dwEventCode;
hres = pSti->GetSTILaunchInformation(szDeviceName,&dwEventCode,szEventName);

if (SUCCEEDED(hres)) {
   DWORD val = 256, type;
   pSti->GetDeviceValue(szDeviceName, STI_DEVICE_VALUE_TWAIN_NAME, &type, 
(unsigned char*)&ActualDeviceName[0], &val);}


Nur den Registryeintrag in HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\StillImage
\Registered Applications hinzuzufügen reicht (leider) nicht.

_________________
Irgendwas ist ja immer...