- PR -

ActiveXコントロールのプロシージャが呼出せない

1
投稿者投稿内容
オサム
会議室デビュー日: 2006/12/22
投稿数: 3
投稿日時: 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

スキルアップ/キャリアアップ(JOB@IT)