AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Verknüpfung mit WinApi ?

Ein Thema von Nedo · begonnen am 23. Sep 2014 · letzter Beitrag vom 24. Sep 2014
Antwort Antwort
Nedo

Registriert seit: 8. Sep 2014
Ort: Osnabrück
16 Beiträge
 
Delphi 10 Seattle Professional
 
#1

AW: Verknüpfung mit WinApi ?

  Alt 23. Sep 2014, 15:32
Hallo,

PChar/PWideChars sind quasi nur Strings.

Delphi-Quellcode:
procedure TForm3.Button1Click(Sender: TObject);
begin
  CreateSymbolicLink('C:\Users\Benutzer\Desktop\Testlink.png', 'C:\Users\Benutzer\Pictures\Bild.png', 0);
end;
Das erzeugt eine Verknüpfung namens "Testlink.png" zur Datei "C:\Users\Benutzer\Pictures\Bild.png" auf dem Desktop. Falls du String-Variablen hast reicht normalerweise ein einfacher Cast auf PChar.
Danke für diese Blitzschnelle Antwort. Ich möchte dies jetzt in mein Programm einbauen:

ich habe also ein TOpenDialog wo ich einen Pfad ermittle
Delphi-Quellcode:
if dlgOpen.Execute() then begin //Dialog aufrufen
m_sDirchangeFile := dlgOpen.FileName; //Pfadname in VAR schreiben
Diese Aktion habe ich für zwei Buttons um einmal fest zu legen von welcher Datei ich die Verk. bilden will und wo diese hin soll.
Nun habe ich diese Pfade in 2 String var´s und muss diese nur noch für 'C:\Users\Benutzer\Desktop\Testlink.png', 'C:\Users\Benutzer\Pictures\Bild.png' ersetzen... und hier kommt der PWideChar Fehler dar ich ja einen string in den Var´s stehen habe.
Lukas
Erst denken dann fragen
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#2

AW: Verknüpfung mit WinApi ?

  Alt 23. Sep 2014, 15:35
Wie oben schon mehrfach steht: Du musst deine Strings einfach auf PChar/PWideChar casten.
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Benutzerbild von lbccaleb
lbccaleb

Registriert seit: 25. Mai 2006
Ort: Rostock / Bremen
2.037 Beiträge
 
Delphi 7 Enterprise
 
#3

AW: Verknüpfung mit WinApi ?

  Alt 23. Sep 2014, 20:37
Er meint, du sollst das einfach so machen:

CreateSymbolicLink(pchar(m_sDirchangeFile), pchar(...und die andere var...), 0);
Martin
MFG Caleb
TheSmallOne (MediaPlayer)
Die Dinge werden berechenbar, wenn man die Natur einer Sache durchschaut hat (Blade)
  Mit Zitat antworten Zitat
Nedo

Registriert seit: 8. Sep 2014
Ort: Osnabrück
16 Beiträge
 
Delphi 10 Seattle Professional
 
#4

AW: Verknüpfung mit WinApi ?

  Alt 24. Sep 2014, 08:14
Also ich habe es jetzt mal fertig geschrieben. Es enstehen keine Fehler ... ABER es ensteht keine Verknüpfung meiner Datei.

Aber Warum ???

Delphi-Quellcode:
unit Testen;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, IniFiles, Filectrl, ShellApi;

type
  TForm2 = class(TForm)
    btnLink: TButton;
    btnOutput: TButton;
    dlgOpen: TOpenDialog;
    procedure btnLinkClick(Sender: TObject);
    procedure btnOutputClick(Sender: TObject);
  private
    m_SDirOutput : String;
    m_SDirLink : String;
  public
    { Public-Deklarationen }
  end;

var
  Form2: TForm2;

implementation

{$R *.dfm}
{*******************************************************************************
  Procedure: btnMoveClick
  Author:    l
  Date:      24.09.2014 08:32:10      Since Version:  1.0.0.0
  Throws:
  Info:      Ziel wählen, Ziel wir in Ausgabeortner gebildet
*******************************************************************************}

procedure TForm2.btnLinkClick(Sender: TObject);
var
LinkName : String;
begin
    dlgOpen.Execute();
    m_SDirLink := dlgOpen.FileName;
    LinkName := m_SDirLink.Substring(m_SDirLink.LastIndexOf('\'));
    m_SDirOutput := m_SDirOutput + LinkName;
    CreateSymbolicLink(pchar(m_SDirOutput), pchar(m_SDirLink), 0);
end;

{*******************************************************************************
  Procedure: btnOutputClick
  Author:    l
  Date:      24.09.2014 08:40:50      Since Version:  1.0.0.0
  Throws:
  Info:      Ausgabeortner wählen
*******************************************************************************}

procedure TForm2.btnOutputClick(Sender: TObject);
begin
    SelectDirectory('Ortner wählen', '', m_SDirOutput);
end;

end.
Lukas
Erst denken dann fragen
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.658 Beiträge
 
Delphi 12 Athens
 
#5

AW: Verknüpfung mit WinApi ?

  Alt 24. Sep 2014, 08:25
Delphi-Quellcode:
if not CreateSymbolicLink(pchar(m_SDirOutput), pchar(m_SDirLink), 0) then
  MessageBox(0, PChar(SysErrorMessage(GetLastError)), nil, MB_OK or MB_ICONERROR);
Was sagt er? Ich vermute fehlende Rechte, wie schon weiter oben erwähnt.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Nedo

Registriert seit: 8. Sep 2014
Ort: Osnabrück
16 Beiträge
 
Delphi 10 Seattle Professional
 
#6

AW: Verknüpfung mit WinApi ?

  Alt 24. Sep 2014, 08:38
[DELPHI]Ich vermute fehlende Rechte.

Jop Richtig ich versuche das mal einzubauen.
Lukas
Erst denken dann fragen
  Mit Zitat antworten Zitat
Nedo

Registriert seit: 8. Sep 2014
Ort: Osnabrück
16 Beiträge
 
Delphi 10 Seattle Professional
 
#7

AW: Verknüpfung mit WinApi ?

  Alt 24. Sep 2014, 09:51
Okay es funktioniert wenn ich die .'exe mit Adminrechten ausführe... Also wie schon vermurtet hängt es mit Rechten zusammen.
Gibt es eine möglich so eine "Als Admin Starten ?" Abfrage einzubauen so wie diese in vielen anderen Programmen besteht? (z.B. CCleaner)
Lukas
Erst denken dann fragen
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.658 Beiträge
 
Delphi 12 Athens
 
#8

AW: Verknüpfung mit WinApi ?

  Alt 24. Sep 2014, 09:54
Verpass Deiner Anwendung ein entsprechendes Manifest. Sofern sie aber eigentlich auch als Normalbenutzer bedienbar sein soll und es lediglich darum geht, eine Verknüpfung zu erzeugen, würde ich mir Alternativen überlegen.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Antwort Antwort

 

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:29 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz