Delphi-Forum.de Delphi-Library.de
C-Sharp-Forum.de C-Sharp-Library.de
Registrieren Login Suche Hilfe Sitemap
Aufruf e. Methode in der Api / Auslesen d. Zieles in e. .LNK
spacer
Autor Nachricht
Peter18
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star

Beiträge: 60
Dabei seit: 13.06.2006
Wohnort: Nahe Cuxhaven (Nordsee)


Delphi4
BeitragVerfasst: Mo 08.02.10 17:01  Antworten mit Zitat Beitrag melden
Ein freundliches Hallo an alle,

ich möchte den Pfad auf eine Datei aus einer ".LNK"-Datei lesen. Dazu möchte ich einen Api-Aufruf verwenden um Fehler zu vermeiden, wenn sich die Dateistruktur ändert. Nach langer Suche habe ich "IShellLink::GetPath Method" gefunden. Da es eine Methode ist funktioniert
ausblenden Delphi-Quelltext markieren
1:
2:
3:
4:
function GetPath(pszPath: PChar;
cchMaxPath: Longint;
pfd: WIN32_FIND_DATA;
fFlags: Longint): Integer; external 'shell32.dll';
nicht. Kann mir jemand einen Tipp geben, was in diesem Fall zu tun ist?

Ach ja, ich verwende Delphi 4.

Freundliche Grüße von der Nordsee!


Zuletzt bearbeitet von Peter18 am Mo 08.02.10 17:25, insgesamt 1-mal bearbeitet
Private Nachricht sendenPosting in privater Nachricht zitieren
platzwart
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star

Beiträge: 672
Erhaltene Danke: 2
Dabei seit: 12.12.2005


Win 7, Ubuntu 9.10
Delphi 2007 Pro, C++, Qt
BeitragVerfasst: Mo 08.02.10 17:10  Antworten mit Zitat Beitrag melden
Was meinst du mit "Weil es eine Methode ist, funktioniert es nicht"?

_________________
Wissenschaft schafft Wissenschaft, denn Wissenschaft ist Wissenschaft, die mit Wissen und Schaffen Wissen schafft. (myself)
Private Nachricht sendenPosting in privater Nachricht zitieren
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starhalf offtopic starofftopic star
Nussknacker 2009 - 1. Rang

Beiträge: 8056
Erhaltene Danke: 17
Dabei seit: 16.07.2004
Wohnort: Jahnsdorf

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, L0.9\FPC2.0
BeitragVerfasst: Mo 08.02.10 17:19  Antworten mit Zitat Beitrag melden
In der Deklaration fehlt noch mindestens ein stdcall; ...

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
Private Nachricht sendenPosting in privater Nachricht zitieren Webseite dieses Mitglieds besuchen
Peter18
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star

(Threadstarter)

Beiträge: 60
Dabei seit: 13.06.2006
Wohnort: Nahe Cuxhaven (Nordsee)


Delphi4
BeitragVerfasst: Mo 08.02.10 17:23  Antworten mit Zitat Beitrag melden
Hallo platzwart,

es kommt die Fehlermeldung "... wurde nicht gefunden". Ich nehme an, dass geschieht, weil es eine Methode von "IShellLink" ist und ähnlich wie bei Delphi (IShellLink.GetPath) deklariert werden muss. Leider weiß ich nicht wie das syntaktisch in Pascal aussehen muss und habe noch keine Hinweise gefunden.


Freundliche Grüße von der Nordsee!
Private Nachricht sendenPosting in privater Nachricht zitieren
Peter18
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star

(Threadstarter)

Beiträge: 60
Dabei seit: 13.06.2006
Wohnort: Nahe Cuxhaven (Nordsee)


Delphi4
BeitragVerfasst: Mo 08.02.10 17:29  Antworten mit Zitat Beitrag melden
Hallo BenBE,

danke für den Hinweis, hatte ich übersehen, aber funktioniert auch damit nicht.

Grüße von der Nordsee
Private Nachricht sendenPosting in privater Nachricht zitieren
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starhalf offtopic starofftopic star
Nussknacker 2009 - 1. Rang

Beiträge: 8056
Erhaltene Danke: 17
Dabei seit: 16.07.2004
Wohnort: Jahnsdorf

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, L0.9\FPC2.0
BeitragVerfasst: Mo 08.02.10 17:44  Antworten mit Zitat Beitrag melden
IShellLink ist ein Interface. Das musst du dementsprechend auch in Delphi so deklarieren. Zusätzlich musst Du dir das zugehörige Objekt holen.

Delphi liefert für IShellLink IIRC die Deklaration in einer der zahlreichen Units schon mit (könnte ShellObj sein). Beispiele zur Verwendung dürfte es im Forum oder bei den Schweizern geben.

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
Private Nachricht sendenPosting in privater Nachricht zitieren Webseite dieses Mitglieds besuchen
Peter18
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star

(Threadstarter)

Beiträge: 60
Dabei seit: 13.06.2006
Wohnort: Nahe Cuxhaven (Nordsee)


Delphi4
BeitragVerfasst: Mo 08.02.10 19:26  Antworten mit Zitat Beitrag melden
Hallo BenBE,

habe die IShellLink-Sachen in der ShellObj gefunden, aber leider ist die Dokumentation meiner Delpi-Version schlecht und beim Umbau bekomme ich die Fehlermeldung "Inkompatible Typen: 'Array' und 'String' wenn ich den Dateipfad übergeben will. Eigentlich sind Strings ja "Array of Char" und bei Microsoft in der "WIN32_FIND_DATA Structure" ein "TCHAR cFileName[MAX_PATH]". Leider habe ich die Delphi-Deklaration "TWin32FindData" nicht finden können und die Hilfe schweigt sich zu diesem Thema aus. Vielleicht hat ja jemand einen Tipp, bevor ich Stunden probiere. Passende Beispiele habe ich bis her leider auch noch nicht gefunden.

Grüße von der Nordsee
Private Nachricht sendenPosting in privater Nachricht zitieren
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starhalf offtopic starofftopic star
Nussknacker 2009 - 1. Rang

Beiträge: 8056
Erhaltene Danke: 17
Dabei seit: 16.07.2004
Wohnort: Jahnsdorf

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, L0.9\FPC2.0
BeitragVerfasst: Mo 08.02.10 23:06  Antworten mit Zitat Beitrag melden
TChar <> Char. Außerdem Array of Char in C ist in Delphi wesentlich besser als PChar zu übersetzen.

Bei den Delphi-Typen eher noch ein A bzw. W anhängen, je nach dem ob AnsiChar oder Widechar.

Außerdem: Das IShellLink-Interface aus der ShellObj ist schon vollständig; incl. der zu verwendenden Typen.

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
Private Nachricht sendenPosting in privater Nachricht zitieren Webseite dieses Mitglieds besuchen
Peter18
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star

(Threadstarter)

Beiträge: 60
Dabei seit: 13.06.2006
Wohnort: Nahe Cuxhaven (Nordsee)


Delphi4
BeitragVerfasst: Di 09.02.10 11:11  Antworten mit Zitat Beitrag melden
Hallo BenBE,

PChar hatte ich probiert, mit dem gleichen Ergebnis. Auch Anhängen von A oder W hat nichts gebracht. Laut Microsoft ist TChar:
Zitat:
The TCHAR data type is a Win32 character string that can be used to describe ANSI, double-byte character set (DBCS), or Unicode strings. For ANSI and DBCS platforms, TCHAR is defined as shown in the following Syntax section. For Unicode platforms, TCHAR is defined as synonymous with the WCHAR type.

Es kommt also darauf an, wie es in Delphi deklariert ist. Aber beim Stöbern mit verschiedenen bei MS gefundenen Stichworten habe ich mit "WIN32_FIND_DATA" die richtige Lösung gefunden:
www.delphi-forum.de/...hlight=win32finddata :D
Hier ist ein Quelltext, mit dem der Link ausgewertet werden kann.

Grüße von der Nordsee
Private Nachricht sendenPosting in privater Nachricht zitieren
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starhalf offtopic starofftopic star
Nussknacker 2009 - 1. Rang

Beiträge: 8056
Erhaltene Danke: 17
Dabei seit: 16.07.2004
Wohnort: Jahnsdorf

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, L0.9\FPC2.0
BeitragVerfasst: Di 09.02.10 14:25  Antworten mit Zitat Beitrag melden
user profile iconPeter18 hat folgendes geschrieben Zum zitierten Posting springen:
Hier ist ein Quelltext, mit dem der Link ausgewertet werden kann.

Grüße von der Nordsee

Welcher Quelltext :nixweiss: Oder meinst im Link?

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
Private Nachricht sendenPosting in privater Nachricht zitieren Webseite dieses Mitglieds besuchen
Peter18
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star

(Threadstarter)

Beiträge: 60
Dabei seit: 13.06.2006
Wohnort: Nahe Cuxhaven (Nordsee)


Delphi4
BeitragVerfasst: Di 09.02.10 15:53  Antworten mit Zitat Beitrag melden
Hallo BenBE,

einfach dem Link folgen. Ist hier im Forum.

Grüße von der verscheiten Nordsee
Private Nachricht sendenPosting in privater Nachricht zitieren
Werbung ausblenden? Dann registriere Dich kostenlos. Weitere Gründe für eine Registrierung.


Werbung ausblenden? Dann registriere Dich kostenlos. Weitere Gründe für eine Registrierung.
Beiträge vom vorherigen Thema anzeigen:   
home home