![]() |
Datenbank: MySql • Version: 4.1 • Zugriff über: MyDAC
MySql Service mit Delphi Code starten
Hallo ich möchte gern meinen MySQL Dienst aus meinem Code raus starten. Wie soll ich das machen
Das hier habe ich schon ausprobiert, aber das klappt irgendwie nicht:
Delphi-Quellcode:
hat noch jemand nen tip?
if ShellExecute(0, nil, 'C:\mysql\bin\mysqld-nt.exe', nil, nil, 9)< 33 then showmessage('Anwendung kann nicht geoeffnet werden ');
Gruß Jana |
Re: MySql Service mit Delphi Code starten
Wenn MySQL als Dienst installiert ist, dann kannst du EXE-Datei nicht einfach starten. Statt dessen brauchst du die Befehle
![]() ![]() ![]() ![]() Ein Beispiel gibts von Microsoft ![]() Wenn du wirklich einfach nur die EXE starten willst, dann musst du (glaube ich) noch den Parameter "--standalone" angeben. Ich hab's mal so gelöst:
Delphi-Quellcode:
function RunThis(command, path: string): THandle;
var si: TStartupInfo; pi: TProcessInformation; begin FillChar(si, SizeOf(si), 0); si.cb := SizeOf(si); FillChar(pi, SizeOf(pi), 0); GetStartupInfo(si); si.wShowWindow := SW_HIDE; si.dwFlags := si.dwFlags or STARTF_USESHOWWINDOW; si.dwFlags := si.dwFlags and not (STARTF_USEPOSITION or STARTF_USESIZE or STARTF_USECOUNTCHARS or STARTF_USEFILLATTRIBUTE); if not CreateProcess(nil, PChar(command), nil, nil, TRUE, NORMAL_PRIORITY_CLASS, nil, PChar(path), si, pi) then begin Result := 0; end else begin CloseHandle(pi.hThread); Result := pi.hProcess; end; end; function CheckProcess(var hp: THandle): Boolean; var exc: Cardinal; begin Result := False; if hp <> 0 then begin exc := STILL_ACTIVE; if GetExitCodeProcess(hp, exc) then if exc <> STILL_ACTIVE then begin CloseHandle(hp); hp := 0; Result := True; end; end; end; procedure TfrmMain.DbServer_Start; var pth, cmd: string; begin CheckProcess(DbServer_Handle); if DbServer_Handle <> 0 then exit; try Screen.Cursor := crHourglass; pth := BasePath + 'mysql\bin'; cmd := pth + '\mysqld-nt.exe --defaults-file=my.cnf --standalone'; DbServer_Handle := RunThis(cmd, pth); if DbServer_Handle = 0 then raise Exception.Create('Fehler beim Starten des Datenbankservers!'); finally Screen.Cursor := crDefault; end; end; procedure TfrmMain.DbServer_Stop; var pth, cmd: string; hdl: THandle; cnt: Integer; begin CheckProcess(DbServer_Handle); if DbServer_Handle = 0 then exit; try Screen.Cursor := crHourglass; pth := BasePath + 'mysql\bin'; cmd := pth + '\mysqladmin.exe --defaults-file=my.cnf --user=root --password=root shutdown'; hdl := RunThis(cmd, pth); if hdl <> 0 then CloseHandle(hdl) else raise Exception.Create('Fehler beim Anhalten des Datenbankservers!'); cnt := 50; repeat dec(cnt); CheckProcess(DbServer_Handle); if DbServer_Handle <> 0 then Sleep(100); until (cnt < 1) or (DbServer_Handle = 0); finally Screen.Cursor := crDefault; end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:02 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 by Thomas Breitkreuz