Hallo,
Delphi Xe4
Apache/2.4.46 (
Win32) OpenSSL/1.1.1h PHP/7.4.12
.. ich wollte eigentlich nur "schnell" eine ISAP-
Dll schreiben, die beim Apache-Start geladen wird -> und dadurch ein CMD gestartet wird..
Bei jedem Apache-Start soll eine spezielle CMD gestartet werden - aber ich kriege das nicht zum laufen
Hat einer einen Hinweis WIESO das nicht geht?
Delphi-Quellcode:
unit WebModuleUnit1;
interface
uses System.SysUtils, System.Classes, Web.HTTPApp,ShellApi;
type
TWebModule1 =
class(TWebModule)
procedure WebModule1DefaultHandlerAction(Sender: TObject;
Request: TWebRequest; Response: TWebResponse;
var Handled: Boolean);
procedure WebModuleCreate(Sender: TObject);
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;
var
WebModuleClass: TComponentClass = TWebModule1;
implementation
{$R *.dfm}
procedure TWebModule1.WebModule1DefaultHandlerAction(Sender: TObject;
Request: TWebRequest; Response: TWebResponse;
var Handled: Boolean);
begin
Response.Content := '
<html><heading/><body>Webserver-Anwendung</body></html>';
end;
procedure TWebModule1.WebModuleCreate(Sender: TObject);
begin
ShellExecute(0,
nil, Pchar('
C:\Server\test.cmd'),
nil,
nil, 5);
end;
end.
die
DLL wird erfolgreich vom Apache geladen ... der Aufruf "http://
localhost:17082/cmd_starter.dll" zeigt im Browser "Webserver-Anwendung" an
aber passieren tut nix
in der httpd.conf hab ich:
<IfModule mod_alias.c>
AddHandler
isapi-handler .dll
ISAPICacheFile c:/server/htdocs/cmd_starter.dll
</IfModule>
Zitat:
library cmd_starter;
uses
Winapi.ActiveX,
System.Win.ComObj,
Web.WebBroker,
Web.Win.ISAPIApp,
Web.Win.ISAPIThreadPool,
WebModuleUnit1 in 'WebModuleUnit1.pas' {WebModule1: TWebModule};
{$R *.res}
exports
GetExtensionVersion,
HttpExtensionProc,
TerminateExtension;
begin
CoInitFlags := COINIT_MULTITHREADED;
Application.Initialize;
Application.WebModuleClass := WebModuleClass;
Application.Run;
end.
Erich Wanker - for life:=1971 to lebensende do begin ..
O
/H\
/ \