デスクトップ作りたい

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
当方はANSI-Cの入門書ぐらいしか読んでないものですが
デスクトップを作りたいと思います。
また、他の人も自由に参加してください。

このスレッドでは以下の4つの項目を守ってください。
1.基本的にソースコードは開示すること
2.言語部分の質問は質問所へ行くこと
3.提案は懸念せず、またその提案を無闇に叩かないこと。(既出かは調べてから発言もしよう)
4.諦めても許して
2デフォルトの名無しさん:04/07/07 17:28
虚塵死ね
>>1
一人で勝手にやれ。氏ね。


終了
4pivot ◆AmzNr0BSVY :04/07/07 17:31
(゚ ∀ ゚)∩ ィヨウ! マタオマエカ
5デフォルトの名無しさん:04/07/07 17:32
とりあえず出かけてきます
6デフォルトの名無しさん:04/07/07 17:32
>>4
誰ですか?
見たことありませんけど
>>5
縦逃げか
8デフォルトの名無しさん:04/07/07 17:44
unko
9カリスマ理容師:04/07/07 17:45
よし俺が乗っ取るか
101:04/07/07 17:46
ところでデスクトップを作るのはどのくらいお金がかかりますか?
ボクは学生なのであまりお金がかからない方法でやりたいと想ってます。
まずは、デスクトップとは(ry
12デフォルトの名無しさん:04/07/07 17:49
もしかしてKDE並みのデスクトップ環境ってんじゃねーだろな?
死ぬぞ。そう簡単に作れてたまるか。
俺じゃどうあがいても無理。
13デフォルトの名無しさん:04/07/07 17:50
>>1
とりあえずLinuxを最小オプションでインストールしろ。
CUIオンリーだ。
その時点でギブアップしそうな気もするが。
初心者はミドルタワーからはじめたほうがいいですよ。
>>14
素でワロタ
ノートで十分
天板はマホガニーでお願いします。
マホガニーは使うにはあまり向いてない。
特に、貧乏性の人間には安いものの方が向いてるよ。
19デフォルトの名無しさん:04/07/09 01:34
>>7
今帰ってきました

>>12
そこまですごいのは作れません。
出来るのはANSI-Cの入門書ぐらいだし

>>13
Linuxは面倒くさそうなんで諦めました
20デフォルトの名無しさん:04/07/09 01:35
以前どっかで見た話だと

表示形式を詳細などではなくアイコンモードにして
背景を透明にすればデスクトップの完成
とか読んだので、そんな感じの事やってみたいと思います
21デフォルトの名無しさん:04/07/09 01:38
猫でも出来るSDKあたりを読みつつBorlandC++で作ります
デスクトップっぽいファイラーを作りたいっつーことか?
おい、どういうことだよ。教えてくれよ…。

デスクトップのデバイスコンテキスト取得して、
デスクトップ情報を読み込んで、そこに描画してけばいいか。
ファイラーみたいなもんか?
デスクトップって何だ?俺もよく分からなくなってきた。
23デフォルトの名無しさん:04/07/09 02:56
単純にGeoDsktopに変わるものが欲しかっただけです。
なので勉強してせめてGeoDsktop以上に使えるものを作ろうかと思いました。
需要は少なそうなので、チマチマやります
お前には無理。
OS作りたいって意味じゃねーの?
このレベルだと絶対無理
26デフォルトの名無しさん:04/07/09 22:08
>>25
OS作りたいんじゃないの?とか云ってる時点でスレの流れを読めてないので
まずGeoDsktopが何なのか調べてください。
そうすれば少しは何が言いたいか理解できると思います。
GeoDsktopに該当するページが見つかりませんでした。
"geodsktop"を含むページは見つかりませんでした。
>>1の役目はスレを立てることだけ。
>>1にGeoDsktopと書いてない以上、
GeoDsktopにこだわる理由は何もない。
なので各自勝手にデスクトップについて語るがよい。
[キンタマ] 俺のデスクトップ
どう思う?
30デフォルトの名無しさん:04/07/09 23:08
デスクトップっぽいファイラーアプリを作りたいってことか?
WindowsのデスクトップはリストコントロールでGUI実装されてると思うので、
同じようなもんは出来なくはないだろうな。
desktop.ini
32デフォルトの名無しさん:04/07/10 07:31
>>27
すまんかった
GeoDesktopで検索かけてくれ
33デフォルトの名無しさん:04/07/10 07:33
>>30
Explorerに結合されてるから無意味って事ですよね。
なので何で必要かというと別のShellを使う時の為のデスクトップです。
というかGeoShell使う時のデスクトップなんですけどね。

とりあえず生暖かく見守ってください
34デフォルトの名無しさん:04/07/10 07:56
motifの復活を>>1賭ける。
Winnyウィルス(通称キンタマ)とは

WinnyというP2P型のファイル共有ソフトを介して広がるワーム。
このワームに感染すると、パソコンのユーザー名、組織名、デスクトップ画像、
デスクトップのファイルがWinnyネットワーク上にUPされてしまう。
[キンタマ] 俺のデスクトップ ユーザー名 [日付].jpg
[キンタマ] 俺のデスクトップ ユーザー名 [日付](ファイル詰め合わせ).zip
[キンタマ] 俺のデスクトップ ユーザー名 [日付](ファイル詰め合わせ).lzh
(組織名がある場合は、 [キンタマ] 俺のデスクトップ ユーザー名(組織名) [日付] となる。)

デスクトップの画像はウィルスに掛かっている限りランダムの値を利用し保存される。
Program Files内のランダムなフォルダに感染し自身をスタートアップに登録する。
連絡先に登録されているメールアドレスに、自分がWinny使用者だと伝えるメールを送るらしい。
(未実装かもしれない)

ぬるぽ入ってます。
>>34
復活も何も、WSベンダのCDEはMotifなんだが。
37名無しさん@そうだ選挙に行こう:04/07/11 14:41
WinNT/CV/WinLogon/Shell=キンタマ
38名無しさん@そうだ選挙に行こう:04/07/11 17:14
シェルエクステンションを作りたいのか?
なんにせよ、まず最初に決めることは
マスコットだな。
ほれ、マスコットキャラクター作ってやったぞ。

    MMMMMMMMMMM
    MMMMMMMMMMM
   M            M
   M −−    −− M
   M  O      O  M
   M      l      M
    L           J
     L    V    J
      L       J
       −−−−−
体を追加してみた

    MMMMMMMMMMM
    MMMMMMMMMMM
   M            M
   M −−    −− M
   M  O      O  M
   M      l      M
    L           J
     L    V    J
      L       J
       −−−−−
      /   V    L
     /    o     L
    / /l   o    l L
    9m l   o    l l
       ----------6m
       l    l    l
       l    l    l
       l    l    l
       l    l    l
       l    l    l
      cuuuu cuuuu
ウィンドウのZ位置を色々しらべてる。
WS_EX_TOPMOSTで最前面には出来るようにはなったけど
ずっと一番後ろに表示させる方法がわからない。
いきなり詰まった
もっとセクシーなマスコットはないのか?
)( ←くびれ
45 :04/07/11 20:17
>>43 ほれ

        MMMMMMMMMMM
        MMMMMMMMMMM
       M            M
       M −−    −− M
       M  O      O  M
       M      l      M
      MML           JMM
     MMM L    V    J  MMM
     MM   L       J    MM
           l      l
          /        L
         / --O---O/ /
        / /l     / /
        9m  )     mm (
           ----------
           (   V    )
           l    l    l
           l    l    l
           l    l    l
           l    l    l
          cuuuu cuuuu
46デフォルトの名無しさん:04/07/15 08:26
透過を使おうと思ったけど
透過を使うとWM_LBUTTONDOWNなどのメッセージを無視しちゃうので
ドラッグして複数のファイルを選択することが出来ないみたい
だから、透過は使うのをやめようと思う
>>46
それはリージョンを適用したウィンドウかな。
マウスメッセージを拾いたい領域にWS_EX_TRANSPARENTのウィンドウを
覆い被せると、見た目が透過でもマウスメッセージを拾える。
マジお勧め。
48デフォルトの名無しさん:04/07/15 09:57
                 ____
               /___ \    
              / ( ___ )::ヽ  
              /::::/ 一  一\::ヽ  
              |::::| ┰  ┰ |::::| 
              |::::| ⇔ ノ ⇔ |::::|  
              |::::| "  ヽ  "/::/  
              \:\  口  /:::/   
             _/(::::\ヽ` //:::)ヽ
           /::::::::\:::::):二:(::::/::::::::\
          (ミ::::::::::::::::::::):::::::(::::::::::::::::::彡)
          (ミ:::::::::::::::::::::::):::::::(::::::::::::::::::::彡)
          (ミ::::::::::::::::::::::):::::::(:::::::::::::::::::::彡)
ReactOS Explorerを持ってきて万事解決
デスクトップというかウィンドウマネージャ作りたいならこんなのがある。
http://www.freenet.org.nz/python/pywm/

APIも結構簡単そう。
http://www.freenet.org.nz/python/pywm/html/index.html
51デフォルトの名無しさん:04/07/15 21:42
>>47さんの云う事をやってみようと思って
色々試行錯誤してみたんですけど
どこがどう違うのか解らないし
理解できるだけの脳を持ち合わせてないようなので
ひとまず別のやり方を考えてみます
>>51
そもそも、どの方法を使ってるんだ?
デスクトップを作りたいのならデスクを作りなさい
54デフォルトの名無しさん:04/07/16 01:51
>>46の文章を何度も見直して必死で考えたんですが、
>>46
「完全に透明なウィンドウ上にある複数のアイコンを
マウスドラッグで同時選択したい」

ってことなんですか?
なんかいまいち実用的な使い方が思いつかないけど・・・(;´Д`)

もし上の解釈があっているなら、複数のウィンドウにまたがって
アイコンを表示する方法は思いつかないなあ。

1個1個のアイコンをウィンドウで表示して、リージョンを適用して
マウスホバーを拾って頑張って処理するとか・・・
55デフォルトの名無しさん:04/07/16 08:12
>>52
CreateWindowExの第一引数にWS_EX_LAYEREDを指定します。
次にWM_CREATEメッセージを拾ったらSetLayeredWindowAttributesで背景色を指定して透明に塗りつぶします

猫でもわかるWin32SDKとか言うのを参考にしてます(346章)
>>55
じゃあ、SetLayeredWindowAttributes()の3番目の引数を1にすることでお茶を濁すとか w
57デフォルトの名無しさん:04/07/16 22:20
>>55は電車の中、携帯で打ったので>>54さんを無視したわけじゃない無いです

>>54
つまり
「完全に透明な(背景を描画してある)ウィンドウでアイコンを表示して、それをD&Dで枠で囲って選択できるようにしたい」
という事です。

エクスプローラが表示するデスクトップと同じ感覚といえばいいでしょうか?
やっぱり子ウィンドウであれ、リージョンであれ処理は大変そうですよね。。。

>>56
それも良い考えだとは思ってやってみたのですが
SetLayeredWindowAttributesを使うとデスクトップがとにかく重くなって
ウィンドウを動かしただけで物凄いカクカクしてしまうので
出来れば他の方法を考えたいと思います。

今のところ、自分の考えつくところでは
このプログラムは透過させないでこのプログラムの背景をデスクトップの背景と同じものにします。
(あたかもデスクトップを透過してるように見せる)
で、重要な右クリックだけ後ろのウィンドウへ送信する

右クリックだけ送信するのはGeoShellというShellの性質上デスクトップで右クリックをするとメニューを表示するので
なんとかその右クリックメニューは出すようにしたいからです。

そつない文章で解りにくくてすみません
頭の中を整理しきれないし、ただ漠然とこういうのがいいのかなぁと試行錯誤してるので言葉になりにくいです。
58デフォルトの名無しさん:04/07/17 03:17
>>57
ああ、要するにGeoShell用のDesktop環境を作りたいわけか。
普通にWindowsを使用するのにどうしてそんな動作をするアプリが必要なのかと
思ったけどようやく納得できたよ。

とはいえGeoShellは上で紹介されてたのを少し見ただけだから全然分かってないけど・・・

もし上記解釈が正しいのなら、Windowを透明にするんじゃなくて、むしろ全画面Windowを
作成すればいいんじゃない?
で、それを一番後ろに表示させる、と。

そうすればアイコンも置けるし、別アプリのウィンドウは手前に表示されるしで良いかと。

具体的には
1、そのDesktopアプリを無理矢理GeoShellのChildプロセスにして実行
  (Win2000やXPでもできたっけ?)
2、常に最背面に表示(ググルしたら毎回WM_WINDOWPOSCHANGINGで背面へ移動させ
  ないといけないようで・・・illi´Д`)
3、右クリックを親へ投げてあげる

みたいな感じでどうでしょう?
思いついたままに書いたから間違っててもあんまり酷い事言わないで(ノД`)>皆様
59デフォルトの名無しさん:04/07/17 08:06
>>58
それでできるならそれやって見たいと思います。

ところで、こういう関数を見つけました
CreateDesktop
何か使えそうな予感
>>1-20辺りまでは良スレの予感がしたんだがな。
すっかり詰まらなくなっちまったな、このスレ。

>>17
桐や檜がいいんじゃねーか?
61デフォルトの名無しさん:04/07/17 08:40
CreateDesktopと似た関数で
GetDesktopWindowをやったのに65536とか返された
GeoShellはデスクトップを作ってないぽいです
でも勝手に貼り付け君というプログラムで調べたら
一応デスクトップに(たぶんGeoShellの)ウィンドウはあるようなので
どうやったらそのウィンドウのハンドルを取得できるかが知りたいです
62デフォルトの名無しさん:04/07/17 12:53
>>61
WindowがあるならVC++付属のSpy++で調べてみては。
で、まずはWindowTitleなりを覚えておいて、Desktopプログラムを立ち上げた時に

GeoShellのプロセスを取得

プロセスが持っているWindowをWindowTitleで検索

hwnd取得

とかは?
開発環境がVCでなかったらまずはSpy++みたいなツールを作らなければ
いけなくなるけど(;´Д`)
もちろんOSから作るんじゃないのか?
>>1
HDESK CreateDesktop(
LPCTSTR lpszDesktop, // name of the new desktop
LPCTSTR lpszDevice, // reserved; must be NULL.
LPDEVMODE pDevMode, // reserved; must be NULL
DWORD dwFlags, // flags to control interaction with other
// applications
DWORD dwDesiredAccess, // specifies access of returned handle
LPSECURITY_ATTRIBUTES lpsa // specifies security attributes of
// the desktop
);
65デフォルトの名無しさん:04/07/17 21:40
>>62
デスクトップとか特殊なので例外が効いて
プロセスとかClassとか扱わなくてもすみそうです

まずウィンドウを最背面にする。
右クリックの場合のみ一つ前のウィンドウにメッセージを転送する。
これだけで上手くGeoShellのメニューは表示できそうです。

ちなみに参考にソースを張っておきます

case WM_WINDOWPOSCHANGING:
((LPWINDOWPOS)lp)->hwndInsertAfter=HWND_BOTTOM;
break;

case WM_RBUTTONUP:
htmp = GetWindow (hwnd, GW_HWNDPREV);
SendMessage (htmp, msg, wp, lp);
return 0;

(ソース参照用>>65
66デフォルトの名無しさん:04/07/18 02:10
>>65
ちょっと待ってくれ。
とりあえず動くことはメデタイが、果たして

「最背面Windowの一つ前のWindowは 必ずShellのWindowである」

と保証されているのか?
例えば他に最背面を維持するアプリケーションがあったとき、自分の
プログラムよりも起動順序が遅かったら、そいつに右クリックが渡って
しまったりしないか?

いちいちShellの子プロセスにする必要は無いかもしれないが、右クリック
送信先の相手はキチンと判断して投げる方がいいように思う。
でないと環境によっては不可解なバグが出そうだ。

つか、公開とかはあんまり考えてない?
それなら構わないかも。
>>66
て言うか当たり前ですな。
68デフォルトの名無しさん:04/07/18 09:05
確かにそうでした
GeoShellを使う限り、多分GeoShellが前に来ると思ってましたが
今Class名を確認したところ
DesktopBackgroundClassという名前のようなので
それで判別をしようと思います。
69デフォルトの名無しさん:04/07/18 11:18
まだまだ先の事になるだろうけど
マイコンピュータのアイコン取得の仕方を見つけたのでメモ程度にURLを張ってみる

ttp://homepage1.nifty.com/MADIA/delphi/delphi_bbs/200302_03020009.html
>>69のURLのまんまでデスクトップのパスは取得できたけど
デスクトップにある数々のファイル名の取得の仕方がわからない

ITEMIDLISTを使うのかと思って検索しても思うように見つからないし
見っけたので忘れないうちに張っておく

ttp://home.a03.itscom.net/tsuzu/programing/tips19.htm
ここ見ておけば大部分がわかったぽ(´д`;)・・・
でも一応参考にしつつ他にも無いか探しながら続けます

ttp://hp.vector.co.jp/authors/VA016117/explorer1.html
前にも出てるけど、なんでReactOS Explorerのソース読まないの?
RectOSはぐぐったけどソースが出回ってるとは知らなかった
と、思って一度見たページを読んだら「オープンソース」とくっきりかかれてた…
一応ソース落として読んでみます

ちなみに読んだのここ
http://www.isho.jp/reactos/
2000やXP互換路線で行くらしいですね>RectOS
で、何で俺にRectOSを読ませたかったんですか?
あっちはOS、こっちはデスクトップですけど。
ReactOSはWindowsNT系互換のOS丸ごとを作るプロジェクトであり、その中には当然デスクトップ(エクスプローラ)も
含まれてるから。多分、求める資料は全てそろってる。
http://www.sky.franken.de/explorer/
>>76
逆に言うとMSの実装に合わせる必要はないと言うことですな。

>>75
いや、違いが分からん。
ひょっとしてWindows上でしか動かんものを作るつもりかい?
LinuxのKDEとかGNOMEみたいなのを作るってんなら分かるけど、
Windowsの上でWindows動かしても面白くないでしょ。
そうじゃないなら、デスクトップ込みでOSから作るか、自分の好きなWindowSystemに
切り替えられるOS上で動くものを作らんと。

うん?そうでもないよ。ReactOS用ソフトはWindowsで走るし、Windows用ソフトはReactOSで走る(かもしれない)。
>>76のバイナリをWindowsで走らせてみると一部実装が甘いものの、完全なシェルとして動くね。
仮想デスクトップ対応なんかの、標準エクスプローラには無い機能の実装も参考になるんじゃないかと。
>>78
>Windowsの上でWindows動かしても面白くないでしょ。
VMWareとか死ぬほど便利ですが。
81デフォルトの名無しさん:04/07/22 16:31
これ読めばD&Dを作れそうなんで張っとく

ttp://homepage2.nifty.com/Mr_XRAY/Halbow/Chap28.html
このスレはメモ帳代わりですか?
>>82
メモ帳でもあり
どれぐらい進行したかという報告じょでもあります

またそれは俺以外の人がしてもいいです
作ろうスレは板違い棚
>>84
巣にカエレ
デスクトップ作ろうとしてたら単位落とした
SHGetFileInfoが何故かメモリリークする
>>87
ちゃんとIMallocしたメモリ解放しろよ。
pMalloc->Release();
で開放はしてるはずなんですけど
一応問題のソース張ります

// lpItem…ファイルのパスなど
// Filter…SHGetFileInfoで取得するアイコンの種類
UINT GetIcon (LPITEMIDLIST lpItem, ULONG Filter)
{
IMalloc *pMalloc;
SHFILEINFO sfi;

//pMallocをする
SHGetMalloc (&pMalloc);

//アイコン情報を入手
SHGetFileInfo((LPCSTR)lpItem,0,&sfi,sizeof(SHFILEINFO),Filter);

//pMallocを開放
pMalloc->Release();

//アイコンを返す
return sfi.iIcon;
}
>>90
DestroyIcon()しろよ
>>91
風呂洗ったらやってみます
>>91
どのタイミングでDestroyIconをすればいいのでしょうか?
メモリーリーク直りました
>>91
有難うございました
最大化してみると
何となくデスクトップに見える
今後は
・ListViewのアイテムの移動
・アイテムのドラッグ&ドロップ
・右クリックメニュー
・背景の表示
です
96デフォルトの名無しさん:04/10/29 07:29:07
デスクトップ欲しければモニター買ってくればおわりじゃんね〜 
97デフォルトの名無しさん:04/10/29 17:27:58
ホントに?
98デフォルトの名無しさん:04/10/30 13:36:07
せっかく面白い所だったのに無駄な煽りをした>>2-3は氏ね
99デフォルトの名無しさん:04/11/04 18:18:13
普通に、DirectXで画面モード切替して
アイコンをテクスチャーとして貼り付けりゃOKだろ
マウスイベントを各座標で発生させるようにしてな。
後は、対応したファイル名をstrに放り込んで
system(str);
で完了。

なーんもむずかねーぜ?
100100:04/11/05 00:16:20
>>99
知ってる単語をありったけ並べて見ました。
101デフォルトの名無しさん:04/11/20 10:35:38
このスレまだあったのか
102デフォルトの名無しさん:04/12/10 19:55:41
まだあったんだ・・・
103デフォルトの名無しさん:2005/04/05(火) 13:56:07
まだあったんだ…pt2
104デフォルトの名無しさん:2005/04/07(木) 00:31:17
まだあったんだ・・・3
105デフォルトの名無しさん:2005/04/11(月) 23:38:20
まだあったんだ・・・その4
106デフォルトの名無しさん:2005/04/12(火) 11:26:01
まだあったんだ・・・5
107デフォルトの名無しさん:2005/04/29(金) 23:40:54
まだあったんだ・・・6
108デフォルトの名無しさん:2005/05/02(月) 15:56:45
まだあったんだ・・・7
109デフォルトの名無しさん:2005/05/04(水) 16:55:12
そろそろ上げるか…
110デフォルトの名無しさん:2005/05/04(水) 21:25:16
そろそろ上げるか…pt2
111デフォルトの名無しさん:2005/05/21(土) 15:49:40
            ,:::-、       __
      ,,r   〈:::::::::)    ィ::::::ヽ
      〃   ,::::;r‐'´       ヽ::ノ
    ,'::;'   /::/  __
     l:::l   l::::l /:::::)   ,:::::、  ji
    |::::ヽ j::::l、ゝ‐′  ゙:;;:ノ ,j:l
    }:::::::ヽ!::::::::ゝ、 <:::.ァ __ノ::;!  パンダー!
.    {::::::::::::::::::::::::::::`='=‐'´:::::::::/
    ';::::::::::::ト、::::::::::::::i^i::::::::::::/
      `ー--' ヽ:::::::::::l l;;;;::::ノ
          `ー-"

【ラッキーレス】
このレスを見た人はコピペでもいいので
10分以内に3つのスレへ貼り付けてください。
そうすれば14日後好きな人から告白されるわ宝くじは当たるわ
出世しまくるわ体の悪い所全部治るわでえらい事です。
112デフォルトの名無しさん:2005/05/22(日) 23:08:43
まだパンダか…
113デフォルトの名無しさん:2005/05/29(日) 20:06:44
まだあったんだ…8
114デフォルトの名無しさん:2005/06/07(火) 23:17:14
疲れるだけで金にならん
115デフォルトの名無しさん:2005/06/26(日) 01:35:35
まだあんのかよ
116デフォルトの名無しさん:2005/07/18(月) 22:23:07
            _
        r-、' ´   `ヽr-、
       ィ7 /l: ハヽハ トヾ    駄スレを隠すことは、この俺が許さん!
        '|l |'´_` ´_ `| ||    信念に基づいて行動する。
        | |´ヒ}   ヒ}`! l|    それを人は正義と言う。
   __ノ゙). 从 l,  _'_.  |从    今俺が行ってることは、上げ荒らしではない。
 ,_'(_ ノ_ヽ ヾl.> - ,イ;リ     正義という名の粛清だぁ!
 { f:テ} {'f:テ}',/\ヽ--//ヽ    
 ヽ,r─‐ 、ィ .、、 i l>Y<! i '、    バーニング!
 / iゝ_ノ iヽ /l   |l  l   ',
 lンヽ/ムノじ

117デフォルトの名無しさん:2005/07/19(火) 10:01:56
まだあんのかよ
118;f;usi;an;as;an:2005/07/26(火) 09:02:00
test
119デフォルトの名無しさん:2005/09/15(木) 03:37:25
つか、がんがれよ。やればできるよ。
120デフォルトの名無しさん:2005/09/16(金) 23:15:16
きみならできるよ
121デフォルトの名無しさん
200509171142このスレをあぼーん設定しました