- - PR -
VB.NETのNetScheduleJobAddでパラメータ不正
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2007-10-11 11:47
こんにちは、今、VB.NETで組んでいるプログラムではまっていまして相談させていただけないかと思っています。
環境はWinXP-Pro、VisualStudio.NET2005(VBコンソールアプリ)です。 やりたいことは、アプリ中から同期処理でWindowsのタスクスケジュールを追加する処理です。 COMとWIN32でできるようですが、今回はWIN32を使用しています。 ---------------------------- 以下ソース --------------------------------- ' LPCWSTR Servername, // 実行対象のリモートサーバー ' LPBYTE Buffer, // 情報を保持しているバッファ ' LPDWORD JobId // 新しいジョブのジョブ識別子 Private Declare Auto Function NetScheduleJobAdd Lib "netapi32.dll" _ ( _ ByVal ServerName As String, _ ByRef Buffer As System.IntPtr, _ ByRef JobId As Integer _ ) As Integer '************ '定数 '************ Private Const MAX_PREF_LEN = -1& Private Const NERR_Success = 0 Private Const ERROR_MORE_DATA = 234& Private Structure AT_INFO Public JobId As Long Public JobTime As Long Public DaysOfMonth As Long Public DaysOfWeek As Byte Public Flags As Byte Public dummy As Integer Public Command As String End Structure Sub Main() ' NetJobに渡すパラメータ Dim lngApiResult As Integer Dim strServerName As New String("192.168.212.204") Dim JobId As New Integer ' AT_INFOの構造体定義 Dim typAtInfo As Type Dim structSize As Integer typAtInfo = GetType(AT_INFO) structSize = System.Runtime.InteropServices.Marshal.SizeOf(typAtInfo) ' バッファ確保 Dim lngBufferPointer As System.IntPtr lngBufferPointer = System.Runtime.InteropServices.Marshal.AllocHGlobal(structSize) ' AT_INFOメンバ設定 Dim AtInfo As AT_INFO = New AT_INFO AtInfo.Command = "notepad" AtInfo.DaysOfWeek = 0 AtInfo.JobTime = New DateTime(2007, 12, 20, 12, 0, 0).ToBinary ' バッファにAT_INFOコピー System.Runtime.InteropServices.Marshal.StructureToPtr(AtInfo, lngBufferPointer, True) ' APIよびだし lngApiResult = NetScheduleJobAdd(strServerName, _ lngBufferPointer, _ JobId _ ) ' 確認 Console.WriteLine("Return:" & lngApiResult) End Sub -------------------------------------------------------------------------- このコードを実行すると、API呼び出しで戻り値「87=INVALID PARAMETER」となります。 一応、流れとしては、 1)AT_INFOに追加したいタスク内容を設定。 2)APIに渡すためのポインタに変換 3)API実行 としたつもりです。 MSDNでAT_INFOの内容は確認して、新規追加時に必要なパラメータは入れているはずですが、動作するサンプルを入手できていないので、手探り状態なのがつらいところです。 もし、何か見落としている点など思い当たる方がいらっしゃいましたらご教授いただけると助かります。 また、多言語でも、API使用のサンプルなどの在処をご存知でしたら教えていただけないでしょうか。 [ メッセージ編集済み 編集者: ウラタン 編集日時 2007-10-11 12:01 ] [ メッセージ編集済み 編集者: ウラタン 編集日時 2007-10-11 12:02 ] |
1