スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

【API他】メモ


▲GetWindowThreadProcessId 関数
http://msdn.microsoft.com/ja-jp/library/cc364779.aspx

何この素晴らしいAPI関数。
エクセルマクロとかからプロセス起こして、そのプロセスIDとGetActiveWindowかなんかで取ってきたウインドウのプロセスIDマッチングすれば大分精度上げてPC操作の自動化が出来そう。
ウインドウ切り替えはキーボードストリームにAltTab流しまくればいけるのか?


▲JF: Linux Kernel 2.6 Documentation: Index
http://www.linux.or.jp/JF/JFdocs/kernel-docs-2.6/index.html
めも

▲デバイスドライバーズ カーネル2.6のモジュールコンパイル用Makefileいろいろ
http://www.devdrv.co.jp/linux/kernel26-makefile.htm
スポンサーサイト

【C#】エラー処理

先日のニコニコ動画の仕様変更の影響で、ニコニコランキングメーカーのマイリスト説明文追加機能が使用できなくなっていた。

という事で、例によってソースコードを解析してみた。


過去記事の「【動画作成】人のアプリの修正」と同じ手順で、怪しい関数を見つけて修正するわけです。


C#は使った事無いにもかかわらず、普段使ってるC言語と微々たるC++の知識、あとC#ソースコード上の関数名から大体の動きが読めるのが素敵。
少しは成長してるなぁと思う今日この頃。


んで、今回の箇所はこんな感じ。

nicoran_debug001

マイリストの編集画面のHTMLパーサ部分のコードで、
ニコニコ動画の仕様変更でパースエラーが起きているだけの模様。

"<tr id=\"の誤検出で2回多くループを回って、
While内の各検索が良く分からない物を探し出してきて
最終的にIndexOf関数に-1突っ込んでException飛ばしてるらしい。

気になったのは、While内のいくつかのIndexOfで、
-1が返って来たにも関わらず"watch/".Length とか足しこんでるので
途中検索に失敗してもまた先頭付近から検索して一見正常に処理される。
多分その後偶然Whileの条件で抜けてしまったらdicには変な値が入ってるかもしれない。


結構これ無いと不便なので、
適当に直して見たけれども、レベルダウンしてる気がしてならない。

って言うのも勝手に継続処理用のコード突っ込んだからなんだけど。
nicoran_debug002
IndexOfの戻りをその場で判定して異常値(-1)だったらdicの追加止めて継続するようにしてみた。
本来であればパースエラーでExceptionになってたのが、そのまま継続してしまうので問題が出そうな気がする。

でも、これだと微々たるHTMLの形式仕様変更だったら読み込めたとこまでのデータは返却出来るのでマシになるかも分からん。

上位の実装次第だけど、よく読まないと分からないので多分宜しくない事になりそう。
とりあえず今は動いてるから良いか。


公式BBSにも報告して来たから本家で修正されるだろう。


====

C#って凄いC++とVB足して割った感じだね。
C#が便利と言われる所以が分かった気がする。

関係ないけどVC#EEってメモリウインドウ無いんですか・・・
あと、ウォッチでStringの途中から先を表示する方法ってないのかな。

Cで言うと
char str[] = "abcde"
で、
str → "abcde"
str[0] → 'a'
str[1] → 'b'
&str[2] → "cde" ※これがやりたい

まぁ、多分なんか方法あるんだろうな。

しょぼん

http://ecolight.blog6.fc2.com/blog-entry-11.html

って記事を書いた直後に本家が対応してくれたよヽ(^o^)丿


いや、自分で努力するのも大事だよね。うん。

【C#】人のアプリの修正

仕事ではたまにやりますが、
プライベートで人のソースコードを弄ったのは初めてのような気がします。

さて、とりあえずSourceForgeにあるソースコードを元に前記事で言っていたタグ検索ができない問題を修正しました。

ただし、SourceForgeにあったソースコードは1.64と公開されているモジュールより古いので一次しのぎで使うぐらいの用途しかないですが。

とりあえずこれでランクファイルが取得できまする。

===========
===========

修正の道筋

・とりあえずソースを落としてくる
・C#らしいのでVC#EEを落としてくる。
・ビルドに必要なライブラリとか落としてくる(ソースコード添付のReadMe参照)
・ソリューションファイルを開いてソリューションエクスプローラーからMainFormを開く
・リスト作成のボタンを探してプロパティからオブジェクト名を探す
・ソース内検索でボタン押下時のハンドラを検索する
・適当にBREAKを張って実行し、F10とF11キーでひたすらもぐる

といった感じでデバッグして、「NicoNetworkManager」クラスの、
public static List
色々
RSSリンクの表示
リンク
QRコード
QRコード
メールフォーム

名前:
メール:
件名:
本文:

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。