- - PR -
ActiveXコントロールのプロシージャが呼出せない
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2006-12-22 20:41
ActiveXコントロール(VB6のOCXファイル)を使用して
Webアプリケーション(HTML)からクライアントにあるアプリケーションを 起動するアプリケーションを実装しています。 Webアプリ側で起動するクライアント側のアプリの ファイルパス(どのアプリを起動するか)を取得して、 ActiveXコントロールにパラメータとして渡し、ファイルパスを受け取った ActiveXコントロールがクライアント側のアプリを起動するのですが、 ファイルパスを引渡すメソッドに対して 「オブジェクトでサポートされていないプロパティまたはメソッドです 'eip_sso_execute_cs.ParamPathSet'」というエラーが 出てファイルパスを引渡すことが出来ません。 エラーを解決する方法をご存知であれば、ご教示ください。 Webサーバ:IIS6 サーバのOS:Windows Server 2003 クライアントのOS:Windows 2000もしくはWindows XP なお、ActiveX単体では起動され、クライアントのアプリ(この場合はメモ帳)が 起動されることは確認済です。 ----------------------------------------------------------------- 【ActeiveXのソース】 Dim path As String '起動するファイルパス 'ActiveXコントロールの起動時に呼出されるプロシージャ Private Sub UserControl_Initialize() Dim pid As Long Dim ph As Long Dim lngEcode As Long pid = Shell(path, vbNormalFocus) ph = OpenProcess(SYNCHRONIZE Or PROCESS_QUERY_INFORMATION, True, pid) WaitForSingleObject ph, 100000 GetExitCodeProcess ph, lngEcode lblExitCode = lngEcode CloseHandle ph End Sub 'ファイルパスを受け取るプロシージャ Public Function ParamPathSet(prm As String) path = prm End Function ----------------------------------------------------------------- 【 OpenProcessのパラメータ「PROCESS_QUERY_INFORMATION」のソース】 Option Explicit Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long Declare Function WaitForSingleObject Lib "kernel32" (ByVal hHandle As Long, ByVal dwMilliseconds As Long) As Long Declare Function GetExitCodeProcess Lib "kernel32" (ByVal hProcess As Long, lpExitCode As Long) As Long Public Const SYNCHRONIZE As Long = &H100000 Public Const PROCESS_QUERY_INFORMATION As Long = &H400 Public Const STANDARD_RIGHTS_REQUIRED As Long = &HF0000 Public Const PROCESS_ALL_ACCESS As Long = STANDARD_RIGHTS_REQUIRED Or SYNCHRONIZE Or &HFFF Type PROCESS_INFORMATION hProcess As Long hThread As Long dwProcessId As Long dwThreadId As Long End Type Type STARTUPINFO cb As Long lpReserved As String lpDesktop As String lpTitle As String dwX As Long dwY As Long dwXSize As Long dwYSize As Long dwXCountChars As Long dwYCountChars As Long dwFillAttribute As Long dwFlags As Long wShowWindow As Integer cbReserved2 As Integer lpReserved2 As Byte hStdInput As Long hStdOutput As Long hStdError As Long End Type Public Const NORMAL_PRIORITY_CLASS = &H20 Declare Function CreateProcess Lib "kernel32" Alias "CreateProcessA" (ByVal lpApplicationName As String, ByVal lpCommandLine As String, lpProcessAttributes As Any, lpThreadAttributes As Any, ByVal bInheritHandles As Long, ByVal dwCreationFlags As Long, lpEnvironment As Any, ByVal lpCurrentDriectory As String, lpStartupInfo As STARTUPINFO, lpProcessInformation As PROCESS_INFORMATION) As Long ----------------------------------------------------------------- 【ActiveXを呼出すHTMLソース】 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html> <head> <title></title> <meta name="GENERATOR" content="Microsoft Visual Studio .NET 7.1"> <meta name="ProgId" content="VisualStudio.HTML"> <meta name="Originator" content="Microsoft Visual Studio .NET 7.1"> </head> <body> <!-- ActiveXコントロールの指定 --> <OBJECT name="eip_sso_execute_cs" codebase="http://10.65.128.134/sso/eip_sso.ocx#version=1.0.0.1" classid="clsid:CA9D58FF-1A9F-434E-B84C-CCD794ADE2BF" VIEWASTEXT> <PARAM NAME="_ExtentX" VALUE="8467"> <PARAM NAME="_ExtentY" VALUE="6350"> </OBJECT> <!-- ActiveXコントロールのプロシージャを呼出してメモ帳を起動する--> <script language="vbscript"> eip_sso_execute_cs.ParamPathSet("notepad.exe") </script> </form> </body> </html> |
1