したらばTOP ■掲示板に戻る■ 全部 1-100 最新50 | メール | |

管理人の独り言(プログラミング関連)

1みみず★:2008/08/10(日) 23:28:15
あまりにもプログラミングの内容が増えすぎた。
よって隔離スレの中を更に隔離。

1678 ◆adhRKFl5jU:2009/03/26(木) 23:28:54
もうちょっとSleipnirStartのソースコードは考えたほうが良い。
enginenameとかいうstring型(まあ、JSには変数の型という観念は存在しないが)を利用して、文字コードを決め打ちしているようだ。
もうちょっと、その検索エンジンの配列にeuc_jpだとか、POSTだとか、そういう情報を持たせて、もっと汎用的に書けば良いのになあと思う。
というか、アイコンの分だけ、div要素を用意しているとか。
普通に動的に生成すれば良いじゃんと思う。
そこまで速度を気にしているんですか?
逆にそっちの方が、転送量は減ると思うんですが。

1679 ◆adhRKFl5jU:2009/03/26(木) 23:30:02
こういうのとか。
-----
if (engine_name == "2ch_thread" || engine_name == "vector" || engine_name == "y_auction" || engine_name == "y_travel" || engine_name == "y_finance") {
function eucjp_search() {
YUD.get("eucjp").contentWindow.document.forms[engine_name].target = YSC.Iconlink.target.Value();
YUD.get("eucjp").contentWindow.document.forms[engine_name][YUD.get("eucjp").contentWindow.document.forms[engine_name].alias.value].value = search_str;
YUD.get("eucjp").contentWindow.document.forms[engine_name].submit()
}
if (!eucjp_flag) {
YUD.get("iframe_div").innerHTML += '<iframe id="eucjp" src="eucjp.htm" onload="parent.document.eucjp_flag = true;"></iframe>'
}
var myInterval = setInterval(function() {
if (eucjp_flag) {
clearInterval(myInterval);
eucjp_search()
}
},
100)
}
-----

1680 ◆adhRKFl5jU:2009/03/26(木) 23:31:58
どうみても、ソースコードが重複しています。
本当にありがとうございました。
別に重複が絶対いけないわけではないが、JavaScriptなんだからさ。
-----
if (engine_name == "y_shopping") {
function eucjp_search2() {
YUD.get("eucjp").contentWindow.document.forms[engine_name].target = YSC.Iconlink.target.Value();
YUD.get("eucjp").contentWindow.document.forms[engine_name][YUD.get("eucjp").contentWindow.document.forms[engine_name].alias.value].value = "http://shopping.yahoo.co.jp/search?p=&quot; + EscapeEUCJP(search_str) + "&first=1&cid=";
YUD.get("eucjp").contentWindow.document.forms[engine_name].submit()
}
if (!eucjp_flag) {
YUD.get("iframe_div").innerHTML += '<iframe id="eucjp" src="eucjp.htm" onload="parent.document.eucjp_flag = true;"></iframe>'
}
var myInterval = setInterval(function() {
if (eucjp_flag) {
clearInterval(myInterval);
eucjp_search2()
}
},
100)
}
-----

1681 ◆adhRKFl5jU:2009/03/26(木) 23:32:45
こんな・・・
-----
if (engine_name == "rakuten") {
function eucjp_search2() {
YUD.get("eucjp").contentWindow.document.forms[engine_name].target = YSC.Iconlink.target.Value();
YUD.get("eucjp").contentWindow.document.forms[engine_name][YUD.get("eucjp").contentWindow.document.forms[engine_name].alias.value].value = "http://esearch.rakuten.co.jp/rms/sd/esearch/vc?sv=2&amp;sitem=&quot; + EscapeEUCJP(search_str);
YUD.get("eucjp").contentWindow.document.forms[engine_name].submit()
}
if (!eucjp_flag) {
YUD.get("iframe_div").innerHTML += '<iframe id="eucjp" src="eucjp.htm" onload="parent.document.eucjp_flag = true;"></iframe>'
}
var myInterval = setInterval(function() {
if (eucjp_flag) {
clearInterval(myInterval);
eucjp_search2()
}
},
100)
}

1682 ◆adhRKFl5jU:2009/03/26(木) 23:34:06
おっと。関係ないソースを貼ってしまった。
まあ、いつものことだからいいか。
-----
function utf8_search() {
YUD.get("utf8").contentWindow.document.forms[engine_name].target = YSC.Iconlink.target.Value();
YUD.get("utf8").contentWindow.document.forms[engine_name][YUD.get("utf8").contentWindow.document.forms[engine_name].alias.value].value = search_str;
YUD.get("utf8").contentWindow.document.forms[engine_name].submit()
}
if (!utf8_flag) {
YUD.get("iframe_div").innerHTML += '<iframe id="utf8" src="utf8.htm" onload="parent.document.utf8_flag = true;"></iframe>'
}
var myInterval = setInterval(function() {
if (utf8_flag) {
clearInterval(myInterval);
utf8_search()
}
},
100)

1683 ◆adhRKFl5jU:2009/03/27(金) 15:12:34
画像とか用意するのが面倒すぎて困る。
なんか合宿中に色々と調べたいことがあったのだが、全部忘れてしまった。
幾らかメモを取ったからそれを見れば良いか。

1684 ◆adhRKFl5jU:2009/03/27(金) 15:15:56
Segment tree - Wikipedia, the free encyclopedia
http://en.wikipedia.org/wiki/Segment_tree
-----
これを誰か訳してくれ><

1685774さん:2009/03/27(金) 15:21:34
HDDは来たのだが、ケースが来ていない。
早く来ないかな。

1686 ◆adhRKFl5jU:2009/03/28(土) 15:01:24
どうやら晦日に届くようだ。
良かった良かった。
正直もっと早く届いてほしいところだが、仕方がないだろう。

1687 ◆adhRKFl5jU:2009/03/28(土) 17:17:17
Debian - Wikipedia
http://ja.wikipedia.org/wiki/Debian
-----
入れるならばこれかな?

1688774さん:2009/03/28(土) 18:59:36
初めてLunascape5.0正式版が出たことを知った。
正直どうでも良いのだが。

1689 ◆adhRKFl5jU:2009/03/28(土) 19:37:00
ふと、IE(Trident)のCookieエディタを作ってやろうかと思って、仕様を調べている。
基本は、
“C:\Documents and Settings\ユーザ名\Local Settings\Temporary Internet Files”
で良いのだが、これは変更が可能である。
一番良いのは、関数で、クッキーの情報が収められているフォルダが分かることだが、恐らくレジストリで格納されているのでそっちを調べるのも良いかもしれない。
でも、レジストリだとWindowsが古いと駄目そうなんだよなあ・・・

1690 ◆adhRKFl5jU:2009/03/28(土) 20:17:00
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders
以下の
Cache
を見れば、フルパスが分かるみたい。
WindowsXP SP3で確認。他は知らん。

1691 ◆adhRKFl5jU:2009/03/28(土) 20:56:43
いつものならばVC++を使うところだが、今回は合宿でのこととか、色々とあったので、それを使わないことにする。
つまり、gcc(g++)で開発しようということだ。
本当はC++0xが使いたいだけなのだが。

1692 ◆adhRKFl5jU:2009/03/28(土) 20:58:49
合宿中にemacsを利用していたために、テキストエディタで保存するのにC-x C-sで保存するくせが付きそうになったが、最終的にはつかなかった。

1693 ◆adhRKFl5jU:2009/03/28(土) 21:01:04
Fortran, C, C++ for Windows
http://www.equation.com/servlet/equation.cmd?call=fortran
-----
ここから落とせるらしい。

1694 ◆adhRKFl5jU:2009/03/29(日) 13:22:21
#include <iostream>

int main(int argc, char **argv){
std::cout << argc << std::endl;
}
-----
これが通らない・・・

1695 ◆adhRKFl5jU:2009/03/29(日) 13:31:45
やっぱり、stable版が良いな。

1696 ◆adhRKFl5jU:2009/03/29(日) 15:28:56
g++ test.cpp -lgdi32 -O3 -mwindows
こうすればコンソールも出なくて美味しい。

1697 ◆adhRKFl5jU:2009/03/29(日) 15:29:58
Win32 programming with bcc and gcc
http://hnw.jp/documents/winprog/
---
コンパイラに1円も払わない窓プログラミング
-----
今だったら、VC++にもあんまり金はかからないんだけれどもね。

1698 ◆adhRKFl5jU:2009/03/29(日) 15:57:02
偽MAKEFILEを書いているのだが、上手く通らない・・・

1699 ◆adhRKFl5jU:2009/03/29(日) 16:01:07
別にどっかの誰かに配布するわけじゃないから、適当に動けば良いやん。
ただ単にmake[ENTER]で簡単にコンパイル出来るところに意味がある。ただそれだけ。

1700 ◆adhRKFl5jU:2009/03/29(日) 16:43:19
vimを華麗に操っている人が居たので、vimも使いかいなと。
簡単には使えるんだけれども・・・

1701 ◆adhRKFl5jU:2009/03/29(日) 20:54:40
Subversionをインストールする。

1702 ◆adhRKFl5jU:2009/03/29(日) 20:57:03
gccでdllをコンパイルするためのメモ
-----
gcc -shared -o test.dll -Wl,--out-implib,libtest.lib,--output-def,deftest.def,--base-file,basetest.base,--kill-at test.def test.o
gcc -shared -o test.dll -Wl,--out-implib,libtest.lib,--output-def,deftest.def,--kill-at test.def test.o
Creating library file: libtest.lib
http://d.hatena.ne.jp/y2q_actionman/20070628/p1
g++ -c -O3 test.cpp

1703 ◆adhRKFl5jU:2009/03/30(月) 10:04:57
今の時代のブラウザを過去に使えたとして、ちゃんと動くだろうか。
多分動かないだろうな・・・。

1704 ◆adhRKFl5jU:2009/03/30(月) 10:23:45
Sleipnirで特定の条件で、特定のページを開くと
> Trident 「…(返事がない。ただの屍のようだ)」
とか出るということで、実際にやってみたら出た。
駄目だろこれはwww

1705 ◆adhRKFl5jU:2009/03/30(月) 10:26:26
最新のテスト版 test20 の IEBrowser.fx の 0x000041CC から書き込まれている。
これとは関係ないが、そのサイトがちゃんと開くと、JavaScriptの処理で物凄くメモリを食う。
メモリリークの為だと思うが、普通に600MBぐらいを食べた。
カーソルが動かなくなるとか、どういうことだろうか・・・

1706 ◆adhRKFl5jU:2009/03/30(月) 10:36:56
再現しなくなった・・・
何故だ・・・

1707 ◆adhRKFl5jU:2009/03/30(月) 10:37:10
http://www.pc-koubou.jp/goods/222314.html

1708 ◆adhRKFl5jU:2009/03/30(月) 14:45:32
7ポートのUSB HUBを買った。

1709 ◆adhRKFl5jU:2009/03/30(月) 15:56:46
nasmでg++とかgccでリンクできるようにするオブジェクトファイルかなんか名前を忘れた奴を吐くには、
nasm -f elf asm.S
とやれば良いみたい。
これでc++とnasmが組み合わせられる。gasなんて使えん。

1710 ◆adhRKFl5jU:2009/03/30(月) 17:32:54
なんかリンクしても、有効なWin32アプリケーションではないとか言われる。
何ゆえ?

1711 ◆adhRKFl5jU:2009/03/30(月) 19:02:31
誰か実行できるようにしてくれ><

1712 ◆adhRKFl5jU:2009/03/30(月) 19:07:46
nasm -f elf asm.s
gcc -O3 -c test.cpp
gcc test.o asm.o -lstdc++
-----
これでa.exeは完成するのだが・・・

1713 ◆adhRKFl5jU:2009/03/30(月) 19:08:06
まあ、ソースがなければ何をしているかは分からないが。

1714 ◆adhRKFl5jU:2009/03/30(月) 19:54:52
Linuxだと上手くいくのか?

1715 ◆adhRKFl5jU:2009/03/30(月) 20:19:02
gccのバージョンを落としたらありえないぐらいエラーを吐く。

1716 ◆adhRKFl5jU:2009/04/01(水) 01:48:57
HDDきたああああああああああああああああああああああ
まあ、昨日だが・・・

1717774さん:2009/04/01(水) 15:05:13
Sleipnirはすごくスレッドリークしているよ!

1718 ◆adhRKFl5jU:2009/04/01(水) 20:57:01
emacs?
俺はvimの方が好きです。

1719 ◆adhRKFl5jU:2009/04/01(水) 21:19:01
Vim documentation: usr_05
http://www.ac.cyberhome.ne.jp/~yakahaira/vimdoc/usr_05.html
-----
次はここから。

1720 ◆adhRKFl5jU:2009/04/02(木) 00:42:28
スレッドリークとか書いたが、全く意味が分からない言葉だよなあ。
つまり、スレッドを作成しっぱなしであるということだ。

最新のバージョンでは、一つのタブに対して一つのスレッドを作るようになるらしい。
なんかまだ動作が微妙で、たまにマウスの入力を受け付けなくなる。
一度他のウィンドウにフォーカスをあわせると改善する。

で、タスクマネージャで確認するとスレッドの数が分かるので、タブを開いて閉じるとちゃんと減る。
だが、開いた後にTrident Boosterを有効にしてタブを閉じるとスレッドの数が減らない。
スレッドの数をどのように判定しているかは知らないが、そっちにバグがあるのかもしれないが、スレッドが増え続けるのは事実である。

1721 ◆adhRKFl5jU:2009/04/02(木) 00:43:26
Linuxをつかうならば、
-----
Debian - Wikipedia
http://ja.wikipedia.org/wiki/Debian
-----
にする。

1722 ◆adhRKFl5jU:2009/04/02(木) 00:45:20
理由を言うならば、UbuntuとKNOPPIXの先祖だから。
ただそれだけ。

1723 ◆adhRKFl5jU:2009/04/02(木) 00:47:27
環境変数が直ぐに適応されないのは非常に困る。

1724 ◆adhRKFl5jU:2009/04/02(木) 01:30:48
JIS, EUC, SJIS の漢字コードについて
http://www.unixuser.org/~euske/doc/kanjicode/index.html

1725 ◆adhRKFl5jU:2009/04/02(木) 01:47:49
マンガ・微積分入門 楽しく読めて、よくわかる 岡部恒治 講談社
http://shop.kodansha.jp/bc2_bc/search_view.jsp?b=2570033
---
8 ハイレグから化石の年代測定まで
-----
微分積分を勉強すれば、ハイレグと数学が結びつくようです。
まあ、本屋で立ち読みした感じは、微分方程式みたいな話だったと思う。
ある人曰く、数学は物理の為に出来た。ということだそうだ。

1726 ◆adhRKFl5jU:2009/04/02(木) 01:51:10
ニコニコ動画が模様替えしていた。

1727 ◆adhRKFl5jU:2009/04/02(木) 01:51:32
なんかプログラムで面白いこと出来ないかなあ?

1728 ◆adhRKFl5jU:2009/04/02(木) 01:51:48
取り敢えず、車輪の再開発をしまくりたい。

1729 ◆adhRKFl5jU:2009/04/02(木) 01:52:19
再発明だった。

1730 ◆adhRKFl5jU:2009/04/02(木) 12:35:49
絶対emacsよりもvim方が良い!

1731 ◆adhRKFl5jU:2009/04/02(木) 21:47:56
Windowsがやっぱりいい。
なぜか。
.exeが一番早く、正確に動くOSだからだ。
wineの逆のソフトはないのかなぁ。

1732 ◆adhRKFl5jU:2009/04/02(木) 23:42:42
原因は不明だが、自分のポータブルハードディスクに入っていたファイルが壊れている。
何故だ。
以前もこういうことがあったが、デフラグとかそういうことだと思う。
でも、合宿に持っていったのも関係があるかもしれない。

1733 ◆adhRKFl5jU:2009/04/02(木) 23:47:44
うーん。
違うか。
マンガミーヤで読み取れないだけか?
でも以前は読み取れたのに。

1734 ◆adhRKFl5jU:2009/04/02(木) 23:55:43
マンガミーヤを入れなおしたら開けた。
何故だ・・・?

1735 ◆adhRKFl5jU:2009/04/02(木) 23:57:14
http://bbb96.exblog.jp/6696488/
-----
ここからマンガミーヤは落とせる。

1736 ◆adhRKFl5jU:2009/04/03(金) 00:56:44
うーん。
せっかく1TB(930GBしか認識していない。頑張りたくないからこれで良い。)のHDDを買って、面白いことが出来る気がしたが、そんな事は無い。
困った。
だけれども、cygwinとか入れてはぁはぁ出来そうな予感。
どんなソフトを作ろうか。

1737 ◆adhRKFl5jU:2009/04/03(金) 16:07:54
取り敢えず、適当に書く。

1738 ◆adhRKFl5jU:2009/04/03(金) 17:39:06
Cygwinのgccのせいかは知らないが、dllをコンパイルして、ソフトに読み込ませるとLoadLibraryで止まる。

1739 ◆adhRKFl5jU:2009/04/03(金) 20:42:02
普通に読み込みするだけのexe作ったら動いた。
何故止まるのかが分からない。

1740 ◆adhRKFl5jU:2009/04/03(金) 21:44:51
CPU Disasm
Address Hex dump Command Comments
010A6E58 |. C643 5C 01 MOV BYTE PTR DS:[EBX+5C],1
-----
ここで強制オン。

1741 ◆adhRKFl5jU:2009/04/03(金) 21:53:31
IEBrowser.fx の 0x0002625B を 00 にを書き換えれば強制off。

1742 ◆adhRKFl5jU:2009/04/03(金) 22:41:34
久しぶりに2chに書き込もうと思ったら、Yahoo BB!が全鯖規制されていた。
荒らした奴、死んでしまえ。

1743 ◆adhRKFl5jU:2009/04/03(金) 23:08:59
cygwinのgccでコンパイルすると、cygwin.dllをロードするようになるらしく、それが原因で止まっていたようだ。
詳しいことは分からない。
dllの静的リンクに失敗したら、エラー吐くと思うんだがなあ。

~~~~.dllは見つかりませんですた。インストールすると解決するかもね!

みたいに出てくると思ったのだが。

1744 ◆adhRKFl5jU:2009/04/03(金) 23:09:41
C = gcc
CC = g++

OPT = -Wall -O3

CO = $(C) $(OPT)
CCO = $(CC) $(OPT)

OBJS = main.o
DEF = main.def

OUT = test.spx
INSTALL_OUT = "C:\Documents and Settings\Owner\デスクトップ\to\sleipnir_unicode(release)\plugins\spx\CookieEditor.spx"

$(OUT): $(OBJS) $(DEF)
$(CO) -shared -o $@ $(OBJS) $(DEF) -lstdc++ -mno-cygwin


.cpp.o:
$(CCO) -c $<

main.o:

.PHONY: install
install:
$(MAKE)
cp -f $(OUT) $(INSTALL_OUT)

.PHONY: clean
clean:
rm *.o $(OUT) -f

1745 ◆adhRKFl5jU:2009/04/03(金) 23:10:08
汚いmakefileという事は分かってますが、動けば良いんだよ!

1746 ◆adhRKFl5jU:2009/04/03(金) 23:10:41
-mno-cygwin
-----
このコマンドだけで、自分の三時間の苦労が報われました。

1747 ◆adhRKFl5jU:2009/04/03(金) 23:11:59
gvimからクリップボードへのyankは
"*y
で大丈夫。覚えにくい。
-----
#include <windows.h>
#include "SPlugin.h"

//namespace{
HINSTANCE g_hInst = NULL;

SPX_HWND SPX_CALL SPX_CreateProc(
SPX_ISleipnir *ipSleipnir,
SPX_HWND hWndParent
){
return NULL;
}

SPX_LONG SPX_CALL SPX_DestroyProc(
SPX_ISleipnir *ipSleipnir,
SPX_HWND hWnd
){
return SPX_ERR_CODE_SUCCESS;
}
//}

extern "C"{
BOOL WINAPI DllMain(HINSTANCE hInst, DWORD dwReason, LPVOID){
if(dwReason == DLL_PROCESS_ATTACH){
g_hInst = hInst;
}
return TRUE;
}

SPX_USHORT SPX_CALL SPX_GetPluginInfo(){
return MAKEWORD(SPX_PLUGIN_EXTENDED_PANEL, SPX_EXTENDED_PANEL_VERSION);
}

SPX_LONG SPX_CALL SPX_Initialize(
SPX_IBrowserEventListener *ipEvent
){
ipEvent->OnCreate = SPX_CreateProc;
ipEvent->OnDestroy = SPX_DestroyProc;
ipEvent->OnIdle = NULL;
ipEvent->OnProperty = NULL;

return SPX_ERR_CODE_SUCCESS;
}
}

1748 ◆adhRKFl5jU:2009/04/03(金) 23:15:26
クリップボードからのペーストの方法が分からない俺はどうすれば良いのですか?
本当にどうするんだっけ?

1749 ◆adhRKFl5jU:2009/04/03(金) 23:17:11
そうだそうだ。vimはp(put)だった。
"*p
でおk。

1750774さん:2009/04/03(金) 23:29:24
cygwinにはtchar.hが入っていないようだ。
残念。
正直駄目すぎるだろ。

1751 ◆adhRKFl5jU:2009/04/03(金) 23:47:12
#include <windows.h>
#include "SPlugin.h"

namespace{
HINSTANCE g_hInst = NULL;
LPCTSTR className = TEXT(" ");
HWND g_hWnd = NULL;

LRESULT CALLBACK MainWndProc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp){
switch(msg){
case WM_PAINT:{
PAINTSTRUCT ps;
HDC hdc = BeginPaint(hWnd, &ps);
RECT rc;
GetClientRect(hWnd, &rc);
DrawText(hdc, TEXT("Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World!"), -1, &rc, DT_CENTER | DT_WORDBREAK);
EndPaint(hWnd, &ps);
break;
}

default:{
return DefWindowProc(hWnd, msg, wp, lp);
}
}
return 0;
}

SPX_HWND SPX_CALL SPX_CreateProc(
SPX_ISleipnir *ipSleipnir,
SPX_HWND hWndParent
){
WNDCLASSEX wc;
wc.cbSize = sizeof(wc);
wc.style = CS_HREDRAW|CS_VREDRAW;
wc.lpfnWndProc = MainWndProc;
wc.cbWndExtra = 0;
wc.cbClsExtra = 0;
wc.hInstance = g_hInst;
wc.hIcon = NULL;
wc.hCursor = LoadCursor(NULL, IDC_ARROW);
wc.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);
wc.lpszMenuName = NULL;
wc.lpszClassName = className;
wc.hIconSm = NULL;

RegisterClassEx(&wc);

g_hWnd = CreateWindowEx(
0,
className,
TEXT(""),
WS_CHILD | WS_VISIBLE,
CW_USEDEFAULT, CW_USEDEFAULT,
CW_USEDEFAULT, CW_USEDEFAULT,
hWndParent,
NULL,
g_hInst,
NULL
);

return g_hWnd;
}

SPX_LONG SPX_CALL SPX_DestroyProc(
SPX_ISleipnir *ipSleipnir,
SPX_HWND hWnd
){
DestroyWindow(g_hWnd);

return SPX_ERR_CODE_SUCCESS;
}
}

extern "C"{
BOOL WINAPI DllMain(HINSTANCE hInst, DWORD dwReason, LPVOID){
if(dwReason == DLL_PROCESS_ATTACH){
g_hInst = hInst;
}
return TRUE;
}

SPX_USHORT SPX_CALL SPX_GetPluginInfo(){
return MAKEWORD(SPX_PLUGIN_EXTENDED_PANEL, SPX_EXTENDED_PANEL_VERSION);
}

SPX_LONG SPX_CALL SPX_Initialize(
SPX_IBrowserEventListener *ipEvent
){
ipEvent->OnCreate = SPX_CreateProc;
ipEvent->OnDestroy = SPX_DestroyProc;
ipEvent->OnIdle = NULL;
ipEvent->OnProperty = NULL;

return SPX_ERR_CODE_SUCCESS;
}
}

1752 ◆adhRKFl5jU:2009/04/04(土) 15:23:08
「その発想はなかった!」と言わせる技術を身につけよう〜仕事の幅を広げる19の発想技法:企業IT部門の変革を支援するエンタープライズ実践情報サイト EnterpriseZine
http://enterprisezine.jp/article/detail/1311

1753 ◆adhRKFl5jU:2009/04/04(土) 16:47:15
IWebBrowser2 *iWebBrowser;
SPX_SendMessage &sm = ipSleipnir->SendMessage;
if(sm(SPX_SM_GETBROWSERINTERFACE, (SPX_LONG)0, (SPX_LONG)&iWebBrowser) == SPX_ERR_CODE_SUCCESS){
iWebBrowser->AddRef();
IHTMLDocument2 *pDoc;
HRESULT hr;
hr = iWebBrowser->get_Document((IDispatch**)&pDoc);
if(SUCCEEDED(hr)){
MessageBox(NULL, TEXT("test"), NULL, MB_OK);
pDoc->Release();
}
iWebBrowser->Release();
}

1754 ◆adhRKFl5jU:2009/04/04(土) 17:12:25
UsefullCode.net
http://www.usefullcode.net/

1755 ◆adhRKFl5jU:2009/04/04(土) 17:52:15
COMって、キャストしまくりだな。
IUnknown*使いまくり。

1756 ◆adhRKFl5jU:2009/04/04(土) 17:54:29
漸くQueryInterfaceの必要性が理解できた。

1757 ◆adhRKFl5jU:2009/04/04(土) 18:00:48
まず、前提として、全てのcomの実装はAddRef,Release,QueryInterfaceを持っている。
そして、一つの実装は複数のインターフェイスを実装できる。
外部に一切実装を開示しないということは、それぞれのインターフェイスのvftable(仮想関数テーブル)の位置も開示しないということだ。
ということで、それを適切に合わせるのがQueryInterfaceということだ。
とても単純なことなのに、なんで気づかなかったんだろう。

1758 ◆adhRKFl5jU:2009/04/04(土) 18:32:12
COMの全容が分かった!

1759 ◆adhRKFl5jU:2009/04/04(土) 22:05:13
第24回 「Googleツールバー」をホストし検索バーとして利用する (タブブラウザーを作る)(UsefullCode.net)
http://www.usefullcode.net/2009/04/24_tabbrowser.html
-----
をみて、IEのツールバーを表示するのは簡単そうだと思った。
今gccで出来るように、インターフェイスを用意したり色々とやっている。

1760 ◆adhRKFl5jU:2009/04/04(土) 22:05:35
#ifndef OBJS_H
#define OBJS_H

#include <windows.h>
#include <objbase.h>
#include <mshtml.h>
#include <ExDisp.h>
#include <shlobj.h>

#define INTERFACE IDockingWindow
DECLARE_INTERFACE_(IDockingWindow, IOleWindow){
STDMETHOD(CloseDW)(THIS_ DWORD) PURE;
STDMETHOD(ResizeBorderDW)(THIS_ LPCRECT, IUnknown*, BOOL) PURE;
STDMETHOD(ShowDW)(THIS_ BOOL) PURE;
};
#undef INTERFACE

typedef struct{
DWORD dwMask;
POINTL ptMinSize;
POINTL ptMaxSize;
POINTL ptIntergral;
POINTL ptActual;
WCHAR wszTitle[256];
DWORD dwModeFlags;
COLORREF crBkgnd;
} DESKBANDINFO;

#define DBIM_MINSIZE 0x0001
#define DBIM_MAXSIZE 0x0002
#define DBIM_INTEGRAL 0x0004
#define DBIM_ACTUAL 0x0008
#define DBIM_TITLE 0x0010
#define DBIM_MODEFLAGS 0x0020
#define DBIM_BKCOLOR 0x0040

#define DBIMF_NORMAL 0x0000
#define DBIMF_VARIABLEHEIGHT 0x0008
#define DBINF_DEBOSSED 0x0020
#define DBIMF_BKCOLOR 0x0040

#define INTERFACE IDeskBand
const GUID IID_IDeskBand = {0xEB0FE172, 0x1A3A, 0x11D0, 0x89, 0xB3, 0x00, 0xA0, 0xC9, 0x0A, 0x90, 0xAC};
DECLARE_INTERFACE_(IDeskBand, IDockingWindow){
STDMETHOD(GetBandInfo)(THIS_ DWORD, DWORD, DESKBANDINFO*) PURE;
};
#undef INTERFACE

#endif

1761 ◆adhRKFl5jU:2009/04/05(日) 10:31:49
コンパイルは通ったが、GoogleToolbarの方がNULLを参照して落ちる。
よく分からん。
IEツールバーの仕様を解説したページが知りたい。

1762 ◆adhRKFl5jU:2009/04/05(日) 12:36:56
うわああああああああああん。
全然上手くいかない。
ちゃんとウィンドウハンドルは取得できるのに表示しない。

1763 ◆adhRKFl5jU:2009/04/05(日) 13:33:36
表示処理を消したら、表示した。
意味不明。

1764 ◆adhRKFl5jU:2009/04/05(日) 14:07:22
Win32APIで初めてレジストリを弄くる。
バックアップ?何それ。おいしい(ry

1765 ◆adhRKFl5jU:2009/04/05(日) 14:11:10
const GUID gGUID = {0x2318C2B1, 0x4965, 0x11D4, 0x9B, 0x18, 0x00, 0x90, 0x27, 0xA5, 0xCD, 0x4F};
IDeskBand *p;
if(SUCCEEDED(CoCreateInstance(gGUID, NULL, CLSCTX_INPROC_SERVER, IID_IDeskBand, (void**)&p))){
IObjectWithSite *pObjectWithSize;
if(SUCCEEDED(p->QueryInterface(IID_IObjectWithSite, (void**)&pObjectWithSize))){
DESKBANDINFO sDeskBandInfo;

ZeroMemory(&sDeskBandInfo, sizeof(sDeskBandInfo));
sDeskBandInfo.dwMask = DBIM_MINSIZE | DBIM_MAXSIZE | DBIM_INTEGRAL | DBIM_ACTUAL | DBIM_TITLE | DBIM_MODEFLAGS | DBIM_BKCOLOR;
if(SUCCEEDED(p->GetBandInfo(0, DBIMF_NORMAL, &sDeskBandInfo))){
MessageBox(NULL, TEXT("SUCCEEDED"), NULL, MB_OK);
IDispatch *iDis;

g_ipSleipnir->SendMessage(SPX_SM_GETAPPINTERFACE, (SPX_LONG)0, (SPX_LONG)&iDis);

IIEToolbar *pIEToolbar = new CIEToolbar;
pIEToolbar->put_hwnd(g_hWnd);
pIEToolbar->put_IWebBrowser2(iDis);

pObjectWithSize->SetSite(pIEToolbar);

HWND hWnd;
p->GetWindow(&hWnd);
if(IsWindow(hWnd)){
MoveWindow(hWnd, 0, 0, 200, sDeskBandInfo.ptMinSize.y, TRUE);
MessageBox(NULL, TEXT("IsWindow == ture"), NULL, MB_OK);
}else{
MessageBox(NULL, TEXT("IsWindow == false"), NULL, MB_OK);
}
}

pObjectWithSize->Release();
}
p->Release();
}

1766 ◆adhRKFl5jU:2009/04/05(日) 15:34:22
const GUID gGUID = {0x2318C2B1, 0x4965, 0x11D4, 0x9B, 0x18, 0x00, 0x90, 0x27, 0xA5, 0xCD, 0x4F};
IDeskBand *p;
if(SUCCEEDED(CoCreateInstance(gGUID, NULL, CLSCTX_INPROC_SERVER, IID_IDeskBand, (void**)&p))){
IObjectWithSite *pObjectWithSize;
if(SUCCEEDED(p->QueryInterface(IID_IObjectWithSite, (void**)&pObjectWithSize))){
DESKBANDINFO sDeskBandInfo;

ZeroMemory(&sDeskBandInfo, sizeof(sDeskBandInfo));
sDeskBandInfo.dwMask = DBIM_MINSIZE | DBIM_MAXSIZE | DBIM_INTEGRAL | DBIM_ACTUAL | DBIM_TITLE | DBIM_MODEFLAGS | DBIM_BKCOLOR;
if(SUCCEEDED(p->GetBandInfo(0, DBIMF_NORMAL, &sDeskBandInfo))){
MessageBox(NULL, TEXT("SUCCEEDED"), NULL, MB_OK);
IDispatch *iDis;

g_ipSleipnir->SendMessage(SPX_SM_GETAPPINTERFACE, (SPX_LONG)0, (SPX_LONG)&iDis);

IIEToolbar *pIEToolbar = new CIEToolbar;
pIEToolbar->put_hwnd(g_hWnd);
pIEToolbar->put_IWebBrowser2(iDis);

pObjectWithSize->SetSite(pIEToolbar);

HWND hWnd;
p->GetWindow(&hWnd);
if(IsWindow(hWnd)){
MoveWindow(hWnd, 0, 0, 200, sDeskBandInfo.ptMinSize.y, TRUE);
MessageBox(NULL, TEXT("IsWindow == ture"), NULL, MB_OK);
}else{
MessageBox(NULL, TEXT("IsWindow == false"), NULL, MB_OK);
}
}

pObjectWithSize->Release();
}
p->Release();
}

1767 ◆adhRKFl5jU:2009/04/05(日) 16:07:20
IDispatch インターフェイス
http://msdn.microsoft.com/ja-jp/library/cc447471.aspx
VARIANT 構造体
http://msdn.microsoft.com/ja-jp/library/cc447470.aspx

1768 ◆adhRKFl5jU:2009/04/05(日) 16:08:35
IWebBrowser2 Interface ()
http://msdn.microsoft.com/en-us/library/aa752127(VS.85).aspx

1769774さん:2009/04/07(火) 13:08:05
handleEvent、addEventListener - 素人がプログラミングを勉強するブログ
http://d.hatena.ne.jp/javascripter/20090406/1239034512

1770774さん:2009/04/07(火) 15:23:26
IEツールバーが表示されません。
全く理由が分からない。
GoogleToolbarだけ表示されるというのも理解できない。

1771 ◆adhRKFl5jU:2009/04/07(火) 16:39:06
IEツールバー開発 @ 2004年06月 @ ratio - rational - irrational @ IDM
http://idm.s9.xrea.com/ratio/2004/06/17/000104.html

1772774さん:2009/04/07(火) 16:50:38
常駐型サーバープログラムのデバッグ手法
http://kzk9.net/publications/webdb48/debug.html

1773774さん:2009/04/07(火) 16:51:05
日本企業に出来ることで俺に出来ないことなど無い!
ことは無いか。

1774 ◆adhRKFl5jU:2009/04/07(火) 16:57:07
Lunascapeの起動時に出てくるよく分からない製品の奴が、全てのウィンドウの上という時点で糞だ。
設定で消せれば良いじゃんという問題ではない。もうその時点で駄目。

というか、普通最前面で表示の機能とか使わないだろう・・・

1775 ◆adhRKFl5jU:2009/04/07(火) 17:00:00
ウィンドウレイアウトを変更しています・・・
そして落ちるwwwwwwww

1776 ◆adhRKFl5jU:2009/04/07(火) 17:04:39
ウィンドウレイアウトを変えると必ず落ちるwwwwwwwwwwwwwwwwwww
Sleipnirよりも不安定wwwwwwwwwwwwwwwwwwwwwwww

1777 ◆adhRKFl5jU:2009/04/07(火) 17:05:36
まあいい。
Lunaを入れたのはIEブラウザの表示方法を研究するためだけである。
デバッガで解析解析!


新着レスの表示


名前: E-mail(省略可)

※書き込む際の注意事項はこちら

※画像アップローダーはこちら

(画像を表示できるのは「画像リンクのサムネイル表示」がオンの掲示板に限ります)

掲示板管理者へ連絡 無料レンタル掲示板