Je ne vais pas mentir. Je ne suis pas tous familiers avec Windows et COMBES COM. C'est la raison pour laquelle je suis là. Tout d'abord, il est possible d'accéder à une DLL à partir d'un script PHP à court d'Apache? Dans mon voyage autour des internets, je crois que j'ai 2 options:
Donc, je prends l'approche COM. P>
try{ $com = new COM('WHAT_GOES_HERE'); } catch(Exception $e){ echo 'error: ' . $e->getMessage(), "\n"; }
3 Réponses :
Chacun de ces Le moyen le plus simple, vous pouvez simplement enregistrer la DLL avec regsvr32.exe et le registre de la fenêtre de recherche avec Regedit.exe pour le nom de la DLL, vous devrez peut-être rechercher plusieurs fois jusqu'à ce que vous trouviez la clé sous La commande dcommnfg.exe montre beaucoup d'informations sur les objets COM. P>
Si vous avez Visual Studio, le visualiseur d'objets OLE / COM (OLEVIEW.EXE) pourrait être utile. P> What_goes_Here code> est l'identifiant PROGID, la classe ID ou le moniker enregistré sur le système d'exploitation. P>
\ hkey_classes_root \ < / code>, qui est le progrès. p>
Vous pouvez exécuter des fonctions DLL (à partir de DLL qui ne sont pas des extensions PHP) avec Winbinder. http://winbinder.org/ En utilisant c'est simple. Vous devez télécharger php_winbinder.dll et l'inclure dans php.ini comme une extension. Dans le script PHP, vous devez utiliser quelque chose de similaire:
function callDll($func, $param = "") { static $dll = null; static $funcAddr = null; if ($dll === null) { $dll = wb_load_library(<DLL PATH AND FILENAME>); } $funcAddr = wb_get_function_address($func, $dll); if ($param != "") { return wb_call_function($funcAddr,array(mb_convert_encoding($param,"UTF-16LE"))); } else { return wb_call_function($funcAddr); } }
Winbinder n'a pas été mis à jour depuis 2010 et semble être un projet MORT OSSH malheureusement. :(
Je ne sais pas ce qui s'est passé avec le site que j'ai mentionné, mais on dirait que le projet est toujours maintenu ici: Github. Com / DarkSynx / Winbinder-php7
Vous pouvez simplement développer une enveloppe autour de votre DLL principale et utiliser cette enveloppe comme extension de votre PHP. Certains outils gratuits tels que Swig peuvent générer cette enveloppe pour vous automatiquement en obtenant l'en-tête de vos fonctions DLL. J'utilise moi-même cette approche et c'était facile et fiable. P>