- PR -

[VB.NET 2003] NetScheduleJobAddの使い方について

1
投稿者投稿内容
シロ
常連さん
会議室デビュー日: 2005/05/15
投稿数: 34
投稿日時: 2006-06-20 11:37
タスクスケジュールの追加を行おうと思っています。

VB6.0でできたサンプルコードを見つけたので、
変換機能を使って.netに変換したところ、
NetScheduleJobAddの部分に”構造体AT_INFOにマーシャリング属性を渡す必要がある”
というワーニングがついていました。
調べてみたところ、マーシャリング属性は構造体に固定長文字列が有る場合につくと
いうことらしいのですが、AT_INFOには固定長文字列を使用していません。http://www.microsoft.com/japan/msdn/net/vbtransitionguide/chapter4/chapter4_8.asp
を見てみたのですが、よくわかりませんでした。。。

実行してみると、エラーコードとして「123」(成功は0)がでてきます。
が、エラーコードを検索しても見つかりません(涙)

どうしたらいいのか分からないので、ご教授願います。
Hongliang
ぬし
会議室デビュー日: 2004/12/25
投稿数: 576
投稿日時: 2006-06-20 12:50
具体的な定義部分のコードが無いと判断できませんが、メッセージからするに構造体のメンバではなく構造体そのものに対して警告されてるんじゃないですか?
AT_INFO には LPWSTR が含まれている事から、StructLayout の CharSet 指定が必須になるような。


引用:

実行してみると、エラーコードとして「123」(成功は0)がでてきます。
が、エラーコードを検索しても見つかりません(涙)


API を使う時は(いや API に限りませんが) MSDN で返値やらパラメータやら確認すべきです。当然のように英語版も確認しましょう。訳し残し、誤訳、構造体その他へのリンクの欠如など日本語版には色々問題がありますし。NetScheduleJobAdd の英語版にはエラーコードへのリンクも張られています。


拙作ですが、COM クライアント実装の道程 という記事で、COM を利用してタスクスケジューラを操作するライブラリを公開しています。
これを利用するのも手かも知れません……が、逆に面倒が増えるだけかも(w;
// きっと今見直すと修正したくなる箇所がまた出てきたりするんだろーなー。
シロ
常連さん
会議室デビュー日: 2005/05/15
投稿数: 34
投稿日時: 2006-06-20 14:56
StructLayout の CharSet 指定と
対象項目にMarshalAsをつけることにより
タスクスケジュールへの追加を行うことができました。

回答ありがとうございました。
今までは、日本語のMSDNを見ていただけですが、
これからは英語版も確認しようと思います。
1

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