누군가이 문제를 해결하고 싶다면 정말 고맙습니다. 상용 백업 제품을 제어 할 VB.NET 앱을 작성하고 있습니다. 내가해야 할 일 중 하나는 기존의 모든 작업을 반복하고 원본 드라이브를 보는 것입니다. VBScript에서 다음과 같이 매우 간단하게이 작업을 수행 할 수 있습니다.VB.NET에서 com 함수를 호출해야합니다.
Dim SP, BackupJob, volumes
Set SP = CreateObject("ShadowStor.ShadowProtect")
For Each Job In SP.Jobs
Set BackupJob = SP.Jobs.GetBackupJob(Job.Description)
BackupJob.GetVolumes volumes
For Each Volume in volumes
WScript.Echo volume
Next
Next
Set SP = Nothing
VB.NET에서는 아무 것도 시도하지 않습니다. com 함수가 변형 데이터 유형 및 배열 (특히 GetVolumes)을 반환한다는 사실과 관련이 있습니다. 나는 문자열 배열, 객체 배열을 사용하고 VariantWrapper에서 반환 값을 래핑하려고 시도했으며 "구현되지 않음"또는 "매개 변수가 잘못되었습니다."와 같은 오류가 항상 발생합니다. 누군가가 지루하고 코드를 작성하려고한다면 기꺼이 그 내용을보고 다시보고 할 것입니다.
업데이트 :
이것은 이상합니다. 이 코드를보고 ". 유효하지 않은 수신자"이것은 하나의 작업에서 볼륨을 표시합니다
Dim SP As Object = CreateObject("ShadowStor.ShadowProtect")
Dim gotJob As Object
Dim volumes() As Object
Try
For Each Job As Object In SP.Jobs
gotJob = SP.Jobs.GetBackupJob(Job.Description.ToString())
gotJob.GetVolumes(volumes)
For Each volume As Object In volumes
MsgBox(volume.ToString())
Next
Next
Catch ex As Exception
MsgBox(ex.Message)
End Try
는, 다음 오류 jobwith이 둘 이상있는 경우 충돌
For Each는 VBScript에서 작동하므로 형식이 일종의 컬렉션이라고 생각합니다. COM 라이브러리에 컬렉션 유형이 있습니까? – GTG
무의미한 코드는 작동하지 않습니다. * 작동하지 않는 코드를 게시하십시오. –
'VB에서 시도하지> NET 작동'이라고하면 무엇을 의미합니까? 오류가 있습니까? 컴파일 시간에? 런타임시에? –