AGB  ·  Datenschutz  ·  Impressum  







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

JEDI API für Delphi XE2

Ein Thema von hesch21 · begonnen am 15. Sep 2011 · letzter Beitrag vom 23. Nov 2011
Antwort Antwort
Seite 1 von 2  1 2      
hesch21

Registriert seit: 31. Aug 2004
Ort: Basel
114 Beiträge
 
Delphi XE2 Enterprise
 
#1

JEDI API für Delphi XE2

  Alt 15. Sep 2011, 10:03
Guten Morgen

ich habe soeben Delphi XE2 gekauft weil ich schon seit langem einen Dienst, der mit einem Treiber kommuniziert, auch in einer 64-Bit-Version haben sollte. Nach einigen Mühen habe ich sogar geschafft, auch die JEDI-JCL/JVCL-Komponenten zu installieren.
Nun stehe ich aber mit dem JEDI-API (aktuelle Version von SourceForgeNet) an. Ich bekomme beim Compile zuerst eine Fehlermeldung
JwsclLsa.pas(111): E2010 Inkompatible Typen: 'Cardinal' und 'NativeUInt'
(Zeile 111, property LsaHandle: Cardinal Read fLsaHandle; )

Wenn ich hingehe und einfach mal probehalber das 'Cardinal' in 'Handle' ändere, läuft mir Kompilation weiter bis zum Fehler
JwsclLsa.pas(481): E2033 Die Typen der tatsächlichen und formalen Var-Parameter müssen übereinstimmen
Auch da wieder führt ein probehalbes Ändern von hToken: TJwTokenHandle; zu hToken : Handle; scheinbar zu Erfolg. Doch dann steht die Umwandlung auf JwslToken.pas an, vermutlich als Folgefehler meiner 'Anpassungen' in JwsclLsa.pas. Der Fehler ist dann folgender:
JwsclToken.pas(3195): E2033 Die Typen der tatsächlichen und formalen Var-Parameter müssen übereinstimmen
Derselbe Fehler wiederholt sich auf Zeilen 3256, 3298, 3452, 3454, 3461, 3501, 3502, 3509, 3628, 3691 und 3735.

Da habe ich dann meine Versuche abgebrochen.

Nun meine Fragen:
- hat es jemand gescchafft, die JEDI-API auf Delphi-XE2 zu installieren?
- wenn nein, weiss jemand, wann man mit einer kompatiblen Version rechnen kann?
- Gibt es etwas anderes 'gescheites' um aus einem Service eine Desktop-Applikation als System-User zu pushen, so dass diese auf jeden möglichen Desktop angezeigt wird. Falls das jemand interessiert, hier die Funktion, welche auf W-XP oder W-7 auf 32-Bit-Maschinen perfekt funktioniert.

Besten Dank für Eure Antworten

Code:
{Starter of Notify program}
procedure TAMNotifier1.StartApp(const App, Parameters, CurDir : TJwString);
var
   pi             : PROCESS_INFORMATION;
   si             : STARTUPINFO;
   dwSessionId    : DWORD;
   winlogonPid    : DWORD;
   hUserToken     : THANDLE;
   hUserTokenDup  : THANDLE;
   hPToken        : THANDLE;
   hProcess       : THANDLE;
   hsnap          : THANDLE;
   dwCreationFlags : DWORD;
   procEntry      : TPROCESSENTRY32;
   winlogonSessId : DWORD;
   tp             : TOKEN_PRIVILEGES;
   lpenv          : pointer;
   err            : boolean;
   pCurDir        : TJwPChar;
   pCmdLine       : TJwPChar;
begin
  pCmdLine        := TJwPChar('"'+App+'" ' + Parameters);
  pCurDir         := Nil;
  if Length(CurDir) > 0 then
     pCurDir := TJwPChar(CurDir);
  dwSessionId := WTSGetActiveConsoleSessionId();
  hSnap      := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
  if (hSnap = INVALID_HANDLE_VALUE) then
      exit;
  procEntry.dwSize := sizeof(TPROCESSENTRY32);
  repeat
     if (comparetext(procEntry.szExeFile, 'winlogon.exe') = 0) then
        begin
        winlogonSessId := 0;
        if (ProcessIdToSessionId(procEntry.th32ProcessID, winlogonSessId)
           and (winlogonSessId = dwSessionId)) then
           begin
           winlogonPid := procEntry.th32ProcessID;
           break;
           end;
        end;
  until (not Process32Next(hSnap, procEntry));
  WTSQueryUserToken(dwSessionId, hUserToken);
  dwCreationFlags := NORMAL_PRIORITY_CLASS or CREATE_NEW_CONSOLE;
  ZeroMemory(@si, sizeof(STARTUPINFO));
  si.cb       := sizeof(STARTUPINFO);
  si.lpDesktop := 'winsta0\Winlogon';
  ZeroMemory(@pi, sizeof(pi));
  hProcess    := OpenProcess(MAXIMUM_ALLOWED,FALSE,winlogonPid);
  if(not OpenProcessToken(hProcess,TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY
     or TOKEN_DUPLICATE or TOKEN_ASSIGN_PRIMARY or TOKEN_ADJUST_SESSIONID
     or TOKEN_READ or TOKEN_WRITE, hPToken)) then
     Err := True;
  if (not LookupPrivilegeValue(nil,SE_DEBUG_NAME,tp.Privileges[0].Luid)) then
     Err := True;
  tp.PrivilegeCount := 1;
  tp.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
  DuplicateTokenEx(hPToken,MAXIMUM_ALLOWED,Nil,
           SecurityIdentification,TokenPrimary,hUserTokenDup);
  SetTokenInformation(hUserTokenDup,
          TokenSessionId,pointer(dwSessionId),sizeof(DWORD));
  if (not AdjustTokenPrivileges(hUserTokenDup,FALSE,@tp,sizeof(TOKEN_PRIVILEGES),
          nil,nil)) then
     Err := True;
  if (GetLastError() = ERROR_NOT_ALL_ASSIGNED) then
     Err := True;
  lpEnv := nil;
  if(CreateEnvironmentBlock(lpEnv,hUserTokenDup,TRUE)) then
     dwCreationFlags := dwCreationFlags or CREATE_UNICODE_ENVIRONMENT
  else
    lpEnv := nil;
  CreateProcessAsUser(hUserTokenDup,TJwPChar(App), pCmdLine,
      nil, nil, FALSE, dwCreationFlags, lpEnv, pCurDir, si, pi );
  CloseHandle(hProcess);
  CloseHandle(hUserToken);
  CloseHandle(hUserTokenDup);
  CloseHandle(hPToken);
end;
Heinz Schneider
  Mit Zitat antworten Zitat
ddcool

Registriert seit: 8. Jun 2003
146 Beiträge
 
Delphi XE2 Architect
 
#2

AW: JEDI API für Delphi XE2

  Alt 2. Nov 2011, 12:22
Same problem here...
  Mit Zitat antworten Zitat
Benutzerbild von kuba
kuba

Registriert seit: 26. Mai 2006
Ort: Arnsberg
588 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: JEDI API für Delphi XE2

  Alt 12. Nov 2011, 14:03
geht auch bei mir nicht

gibts da schon was neues ??

kuba
Stefan Kubatzki
E=mc2
  Mit Zitat antworten Zitat
Benutzerbild von chaosben
chaosben

Registriert seit: 27. Apr 2005
Ort: Görlitz
1.358 Beiträge
 
Delphi XE2 Professional
 
#4

AW: JEDI API für Delphi XE2

  Alt 12. Nov 2011, 17:36
Also die Jedi-Windows-API aus dem SVN-Trunk lässt sich unter XE2 kompilieren.

Die Jedi-Security-Lib hat sich imho bisher noch keiner zur Brust genommen. Das könnte sich ändern, sobald mein XE2 auf Arbeit eintrifft.
Benjamin Schwarze
If I have seen further it is by standing on the shoulders of Giants. (Isaac Newton)
  Mit Zitat antworten Zitat
Benutzerbild von kuba
kuba

Registriert seit: 26. Mai 2006
Ort: Arnsberg
588 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: JEDI API für Delphi XE2

  Alt 17. Nov 2011, 18:17
aber bei 64 Bit stolpert der Compiler über Assembler Code...

[DCC Fehler] JwaWinNT.pas(9651): E1025 Sprach-Feature wird nicht unterstützt: 'ASM'

kuba
Stefan Kubatzki
E=mc2
  Mit Zitat antworten Zitat
daywalker9

Registriert seit: 1. Jan 2010
Ort: Leer
594 Beiträge
 
Delphi XE3 Professional
 
#6

AW: JEDI API für Delphi XE2

  Alt 17. Nov 2011, 18:46
Hast Du den Compilerschalter DYNAMIC_LINK definiert?

Wenn ja, nehm den mal raus.
Lars
  Mit Zitat antworten Zitat
Benutzerbild von chaosben
chaosben

Registriert seit: 27. Apr 2005
Ort: Görlitz
1.358 Beiträge
 
Delphi XE2 Professional
 
#7

AW: JEDI API für Delphi XE2

  Alt 18. Nov 2011, 06:46
aber bei 64 Bit stolpert der Compiler
Hast du auch den svn-trunk genommen? Der läuft bei mir 1a.
Benjamin Schwarze
If I have seen further it is by standing on the shoulders of Giants. (Isaac Newton)
  Mit Zitat antworten Zitat
Benutzerbild von kuba
kuba

Registriert seit: 26. Mai 2006
Ort: Arnsberg
588 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: JEDI API für Delphi XE2

  Alt 18. Nov 2011, 08:20
Hallo,

den Compilerschalter DYNAMIC_LINK kann ich nirgends in den Projektoptionen finden. Den SVN-trunk habe ich mir hier heruntergeladen.

Meine Pfade (64-Bit):

C:\jedi-apilib\jwapi\branches\2.3\Win32API\jwaWindows;
C:\jedi-apilib\jwapi\branches\2.3\Win32API;
C:\jedi-apilib\jwapi\branches\2.3\Packages;
C:\jedi-apilib\jwapi\branches\2.3\Common;
C:\jedi-apilib\jwapi\branches\2.3\Includes;

Habe auch diese ausprobiert:

C:\jedi-apilib\jwapi\trunk\Win32API\jwaWindows;
C:\jedi-apilib\jwapi\trunk\Win32API;
C:\jedi-apilib\jwapi\trunk\Packages;
C:\jedi-apilib\jwapi\trunk\Common;
C:\jedi-apilib\jwapi\trunk\Includes;

In der JediAPILib.inc habe ich folgende Zeile geändert (ging sonst gar nicht):

{$I ..\includes\jproject\jedi.inc}

geändert in:

{$I jedi.inc}

Was läuft falsch ??

kuba
Stefan Kubatzki
E=mc2
  Mit Zitat antworten Zitat
Benutzerbild von chaosben
chaosben

Registriert seit: 27. Apr 2005
Ort: Görlitz
1.358 Beiträge
 
Delphi XE2 Professional
 
#9

AW: JEDI API für Delphi XE2

  Alt 19. Nov 2011, 08:40
Hmmm .. also wenn, dann kann es nur mit dem 2. Pack an Pfaden funktionieren.

Leider hab ich im Moment kein XE2 zur Hand. Sobald ich es aber habe, werd ich mich mit deinem Problem befassen.
Benjamin Schwarze
If I have seen further it is by standing on the shoulders of Giants. (Isaac Newton)
  Mit Zitat antworten Zitat
Benutzerbild von kuba
kuba

Registriert seit: 26. Mai 2006
Ort: Arnsberg
588 Beiträge
 
Delphi 11 Alexandria
 
#10

AW: JEDI API für Delphi XE2

  Alt 19. Nov 2011, 14:14
im trunk fehlt die Jedi.inc komplett.

kuba
Stefan Kubatzki
E=mc2
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      

 

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 18:51 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz