AGB  ·  Datenschutz  ·  Impressum  







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

Prozess Starten

Ein Thema von Larsi · begonnen am 11. Feb 2008 · letzter Beitrag vom 5. Mai 2008
Antwort Antwort
Seite 2 von 2     12   
Arnulf

Registriert seit: 28. Okt 2004
Ort: Wien
271 Beiträge
 
#11

Re: Prozess Starten

  Alt 25. Apr 2008, 15:02
Darf ich an der stelle einhacken und nachfragen was mit elevation gemeint ist?

Ich hab probleme mit createprocess.
manche programme lassen sich gut starten manche garnicht.

mir ist es wichtig die process id des programms zu bekommen deshalb will ich lieber creatprocess verwenden.

zum Beispiel kann ich vlc ( video lan client ) gut starten.
ein spiel (medal of honor ) funktioniert nicht.

was ist mit elevation gemeint?
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#12

Re: Prozess Starten

  Alt 25. Apr 2008, 15:17
du kannst auch ShellExecuteEx verwenden wenn du einfach nur das Prozesshandle brauchst und sonst nix spezielles angeben willst.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Arnulf

Registriert seit: 28. Okt 2004
Ort: Wien
271 Beiträge
 
#13

Re: Prozess Starten

  Alt 26. Apr 2008, 15:22
Naja - getprocessid gibt es bei mir noch nicht ( delphi 6 )
ich glaube auch nicht, dass ich den shellexecuteinfo strukt im windows.h habe.
gut den könnte ich mir noch selbst basteln.
auch shellexecuteex gibt es noch nicht.

Vermutlich würde ich es mit etwas basteln hin bekommen aber es bedeutet für mich immer noch stress
winapi funktionen und strukts zu verwenden dich nicht gleich im header von delphi vorhanden sind.
Bin nicht so erfahren.

also hilft mir das process handle nicht viel.
lieber wäre es wenn ich gleich dirrekt die pid bekommen würde.

bisher mach ich es mit shellexecute und hol mir über den findwindowex usw. dann die pid.
bzw. über createprocess wenn es bei dem programm funktioniert.

umständlich oder nicht sicher.

trotzdem war die frage was mit elevation gemeint ist.
und sollte es noch tips geben oder jemand der für delphi6 die winapi header hat bitte antworten.

lg
Arnulf
  Mit Zitat antworten Zitat
Arnulf

Registriert seit: 28. Okt 2004
Ort: Wien
271 Beiträge
 
#14

Re: Prozess Starten

  Alt 5. Mai 2008, 10:50
Ich wollte nur sagen, dass ich mich geirrt habe.
shellexecuteex und auch der strukt existieren in delphi6 bereits.

nur getprocessid gibt es noch nicht.
damit habe ich alles was ich brauche.

jedenfalls würde ich ganz gerne noch wissen was es denn jetzt wirklich mit dem createprocess und der process elevation auf sich hat.
aber die frage hab ich ja schon gestellt. - wollte nur das obige relativieren.

danke
Arnulf
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.157 Beiträge
 
Delphi 12 Athens
 
#15

Re: Prozess Starten

  Alt 5. Mai 2008, 11:28
nur nochmal kurz zu MSDN-Library durchsuchenWinExec ...
Zitat:
Das klingt für mich wie ein Verbot, wenn man das Prozesshandle nicht braucht.
ganz einfach, diese Funktion existiert nur noch zur Abwärtskompatibilität, also damit alte Win16-Programme noch laufen können.

unter Win32 gibt es ShellExecute und Co. und dieses sollte auch verwendet werden.
Zitat:
WinExec Function

Note: This function is provided only for compatibility with 16-bit Windows. Applications should use the CreateProcess function.

Elevation ... keine Ahnung, aber ich vermute mal er meint es gibt sonst Problemchen mit Privilegen/Berechtigungen.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Dezipaitor

Registriert seit: 14. Apr 2003
Ort: Stuttgart
1.701 Beiträge
 
Delphi 7 Professional
 
#16

Re: Prozess Starten

  Alt 5. Mai 2008, 12:04
Elevation: Nachträglich erhöhte Rechte für einen Prozess bekommen:
http://blog.delphi-jedi.net/2008/03/...ta-with-jwscl/

Windows Headers: http://blog.delphi-jedi.net/2007/10/...i-release-315/
Christian
Windows, Tokens, Access Control List, Dateisicherheit, Desktop, Vista Elevation?
Goto: JEDI API LIB & Windows Security Code Library (JWSCL)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.157 Beiträge
 
Delphi 12 Athens
 
#17

Re: Prozess Starten

  Alt 5. Mai 2008, 17:55
hab da grad was in der ShellAPI.h gefunden ... sieht doch nett aus?
Code:
HRESULT MyShellExec(PCWSTR pszCmd)
{
    PWSTR pszApp;
    PWSTR pszCmdLine;
    HRESULT hr = SHEvaluateSystemCommandTemplate(pszCmd, &pszApp, &pszCmdLine);
    if (SUCCEEDED(hr))
    {
        //  if this was a real template, maybe some kind of wnsprintf() first?
        SHELLEXECUTEINFOW sei = {
            sizeof(sei),          // cbSize;
            0,                    // fMask
            NULL,                 // hwnd
            NULL,                 // lpVerb
            pszApp,               // lpFile
            PathGetArgs(pszCmdLine), // lpParameters
            NULL,                 // lpDirectory
            SW_SHOWNORMAL,        // nShow
            0,                    // hInstApp
            NULL,                 // lpIDList
            NULL,                 // lpClass
            NULL,                 // hkeyClass
            0,                    // dwHotKey
            NULL,                 // hIcon
            NULL                  // hProcess
        };

        if (ShellExecuteEx(&sei))
        {
            //  we are good
            ASSERT(hr == S_OK);
        }
        else
        {
            hr = HRESULT_FROM_WIN32(GetLastError());
        }

        CoTaskMemFree(pszApp);
        CoTaskMemFree(pszCmdLine);
    }
    return hr;
}

HRESULT MyCreateProcessPriv(PCWSTR pszCmd)
{
    PWSTR pszApp;
    PWSTR pszCmdLine;
    HRESULT hr = SHEvaluateSystemCommandTemplate(pszCmd, &pszApp, &pszCmdLine);
    if (SUCCEEDED(hr))
    {
        //  if this was a real template, maybe some kind of wnsprintf() first?
        PROCESS_INFORMATION pi;
        STARTUPINFO si = {0};
        si.cb = sizeof(startup);
        si.wShowWindow = SW_SHOWNORMAL;

        if (CreateProcess(pszApp, pszCmdLine, NULL, NULL, FALSE,
                 CREATE_DEFAULT_ERROR_MODE, NULL, NULL, &si, &pi))
        {
            //  we are good
            ASSERT(hr == S_OK);
            CloseHandle(pi.hProcess);
            CloseHandle(pi.hThread);
        }
        else
        {
            hr = HRESULT_FROM_WIN32(GetLastError());
        }

        CoTaskMemFree(pszApp);
        CoTaskMemFree(pszCmdLine);
    }
    return hr;
}
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 10:01 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