Hirdetés

2024. március 28., csütörtök

Gyorskeresés

Hozzászólások

(#1) pmonitor


pmonitor
aktív tag

Ezt a topic-ot a win api függvények használatának példa kódjaira hoztam létre. Természetesen az ehhez tartozó alapvető algoritmusok használatával. Az elsődleges programzási nyelv a C, de más nyelvben is lehet példakód.

Az első ilyen ilyen téma a mappák/file-ok listázása. Az itt lévő példakód 2 szélsőséges esetet mutat be. Az egyik buffereket használ a mappák listázására. A szaggatott vonal alatti rész pedig bufferek nélkül listázza a mappákat. A bufferes megoldás előnye, hogy mind1 neki, hogy milyen app-ban használjuk(mert független az UI-tól). A buffer nélküli megoldás azonban csak konkrét környezetben használható(nem válik el az UI a kódban). Viszont itt nem fordulhat elő buffer overflow. Sebességre mind1ik elég gyors. Sztem. jelentősen egyiket sem lehet gyorsítani. Kész programban talán a FreeCommander használ hasonló algót. Ahogy nézem, annak hasonló a keresési sebessége.

Nyitó hsz-nek talán ennyi.

http://www.bferi.hu/download.php ; http://bferi.hu/egyeb.php

(#2) jattila48 válasza pmonitor (#1) üzenetére


jattila48
aktív tag

Már nyitottam egy hasonló topikot: Windows programozás, remélem ennek nagyobb sikere lesz. Bár lehet, hogy kettő fölösleges. Majd a moderátorok eldöntik.

[ Szerkesztve ]

„Kétségtelen, hogy nem tudjuk, mit tegyünk, de felkészültek és elszántak vagyunk.” - Olaf Scholz német kancellár

(#3) pmonitor válasza jattila48 (#2) üzenetére


pmonitor
aktív tag

Nagyobb sikere nem hiszem, hogy lesz. Legalábbis a hsz írók között nem hiszem(bár ki tudja). Inkább az olvasók között. Én elsősorban példakódok írására helyezném a hangsúlyt. De ha törlik, vagy lezárják ezt a topic-ot, akkor átmegyek oda.

http://www.bferi.hu/download.php ; http://bferi.hu/egyeb.php

(#4) pmonitor


pmonitor
aktív tag

A wintree.c-ben levő programocska a window-okat listázza ki fa szerkezetben console app-ban. A függvény a FindWindowEx() api függvényt hívogatja rekurzívan. A "text mezőnek" a hosszát 100-ra maximalizáltam. Ha nem nyomtatható karaktert tartalmaz, akkor a "string"-et ott levágja.

http://www.bferi.hu/download.php ; http://bferi.hu/egyeb.php

(#5) pmonitor


pmonitor
aktív tag

A proclist.c-ben lévő console kód a process-eket listázza ki. Az ID-et, vmint a process nevét a teljes elérési útvonalával - ha tudja. Ha nem tudja az útvonalat, akkor csak a rövid nevet írja ki. A programot rendszergazdaként kell futtatni.

http://www.bferi.hu/download.php ; http://bferi.hu/egyeb.php

(#6) pmonitor válasza pmonitor (#5) üzenetére


pmonitor
aktív tag

Ezt felhasználva módosítottam az itt lévő kódot. 1 process-nél először a PID-et írja ki, majd a process nevét a teljes elérési útvonalával - ha tudja. Az utána levő sorban a cmdline-t írja ki(jobb esetben :) ).

http://www.bferi.hu/download.php ; http://bferi.hu/egyeb.php

(#7) pmonitor


pmonitor
aktív tag

A dialogs.c-ben levő console app az alapvető dialog box-ok(FolderBrowserDialog, OpenFileDialog, SaveFileDialog és PrintDialog) bemutatására szolgál. A kódok részben megtalálhatók az interneten, de így egyben úgy tudom, hogy nem.

http://www.bferi.hu/download.php ; http://bferi.hu/egyeb.php

(#8) pmonitor válasza pmonitor (#7) üzenetére


pmonitor
aktív tag

A netet túrva találtam 1 com+-os megoldást a FolderBrowserDialogra. Ki tudja melyik jobb? Erre 'szoktam vóóót mondani, hogy a programozás annyira objektív, hogy az már szubjektív. ;] Természetesen ez a megvalósítás is megtalálható a dialogs.c-ben.

http://www.bferi.hu/download.php ; http://bferi.hu/egyeb.php

(#9) pmonitor


pmonitor
aktív tag

A controls.c-ben az alapvető control-okat mutatom be. Még mindig Console App-ot hozunk létre! De természetesen megfelelő átalakítással Windows App-ban is használható. A megjelenítés a hook miatt lassú. Ha ezt kivesszük, akkor sokkal gyorsabb, viszont a tabulálás nem műxik rendesen!

Jó programozást kívánok mindenkinek!

http://www.bferi.hu/download.php ; http://bferi.hu/egyeb.php

(#10) pmonitor


pmonitor
aktív tag

A rotlist.c, ill. a rotlist.cs file-ok a ROT-ot listázzák ki C-ben ill. C#-ban. A kódokat több helyről bányásztam össze, meg kellett 1 kis kreativitás is hozzá. C#-ban az IDispatch-t kétféleképpen is meg lehet valósítani. Így:
[ComImport]
[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
[Guid("00020400-0000-0000-C000-000000000046")]
private interface IDispatch
{
int GetTypeInfoCount();

[return: MarshalAs(UnmanagedType.Interface)]
ITypeInfo GetTypeInfo(
[In, MarshalAs(UnmanagedType.U4)] int iTInfo,
[In, MarshalAs(UnmanagedType.U4)] int lcid);

void GetIDsOfNames(
[In] ref Guid riid,
[In, MarshalAs(UnmanagedType.LPArray)] string[] rgszNames,
[In, MarshalAs(UnmanagedType.U4)] int cNames,
[In, MarshalAs(UnmanagedType.U4)] int lcid,
[Out, MarshalAs(UnmanagedType.LPArray)] int[] rgDispId);
}

vagy így:

[ComImport()]
[Guid("00020400-0000-0000-C000-000000000046")]
[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
private interface IDispatch
{
[PreserveSig]
int GetTypeInfoCount(out int Count);

[PreserveSig]
int GetTypeInfo
(
[MarshalAs(UnmanagedType.U4)] int iTInfo,
[MarshalAs(UnmanagedType.U4)] int lcid,
out System.Runtime.InteropServices.ComTypes.ITypeInfo typeInfo
);

[PreserveSig]
int GetIDsOfNames
(
ref Guid riid,
[MarshalAs(UnmanagedType.LPArray, ArraySubType = UnmanagedType.LPWStr)]
string[] rgsNames,
int cNames,
int lcid,
[MarshalAs(UnmanagedType.LPArray)] int[] rgDispId
);

[PreserveSig]
int Invoke
(
int dispIdMember,
ref Guid riid,
uint lcid,
ushort wFlags,
ref System.Runtime.InteropServices.ComTypes.DISPPARAMS pDispParams,
out object pVarResult,
ref System.Runtime.InteropServices.ComTypes.EXCEPINFO pExcepInfo,
IntPtr[] pArgErr
);
}

Hogy melyik jobb, arról fogalmam sincs. Ha vki. tudja erre a választ, ő elmagyarázhatná. ROT bejegyzésben vannak pl. az ms office app-ok objektumai. Sajnos ha rendszergazdaként futtatjuk a kódokat, akkor nem működnek sem C-ben, sem C#-ban.

http://www.bferi.hu/download.php ; http://bferi.hu/egyeb.php

(#11) pmonitor


pmonitor
aktív tag

Az eddig leírt témák megtalálhatók ezen az oldalon. Természetesen nem csak a WIN API használatával kapcsolatos dolgok vannak ezen az oldalon. Azon vagyok, hogy minél több hasznos kód legyen az itt felsorolt linkek mögött. Ezért, ha nem is sűrűn, de időnként érdemes betérni a Linktár-ba.

További jó programozást kívánok mindenkinek!

[ Szerkesztve ]

http://www.bferi.hu/download.php ; http://bferi.hu/egyeb.php

(#12) pmonitor


pmonitor
aktív tag

A winforms.cs-ben lévő Console forráskód a háttérben futó form alkalmazására 1 példa. Bővebben itt írtam róla,, de természetesen megtalálható a linktárban is.

http://www.bferi.hu/download.php ; http://bferi.hu/egyeb.php

(#13) pmonitor


pmonitor
aktív tag

A callfuncpointer.cs-ben lévő forráskód azt mutatja be, hogy hogyan lehet win api függvényeket a GetProcAddress() által vissza adott függvény mutatóval meghívni. A példa kódban a MessageBoxA(), és a MessageboxW() függvényeket hívom meg.

http://www.bferi.hu/download.php ; http://bferi.hu/egyeb.php

(#14) pmonitor


pmonitor
aktív tag

Az excel.cs-ben lévő kód ugyanazt csinálja C#-ban, mint ez a C++ kód. Csak ez közvetlenül nem a win api-t használja. A működéshez telepített M office szükséges! A kódban nincs hibakezelés. Ez is megtalálható a linktárban is.

http://www.bferi.hu/download.php ; http://bferi.hu/egyeb.php

(#15) pmonitor


pmonitor
aktív tag

A neten találtam ezt a C++ kódot. Ez alapján készítettem egy C-ben írt .dll-t, ami természetesen C#-ban is használható. A .dll kódja itt található. Az ezt felhasználó C# kód pedig itt. Ez egyébként ugyanazt csinálja, mint a sysinternals handle.exe nevű programja(csak nem olyan "monstrum" :) ).

http://www.bferi.hu/download.php ; http://bferi.hu/egyeb.php

(#16) pmonitor


pmonitor
aktív tag

Audió file-ok konvertálására hoztam létre az audioconv.rar-ban található audioconv.exe programot, melyben a forrás is megtalálható. Ez .mp3 file-okat konvertál .wav-ra, valamint .wav file-okat .mp3-ra. A programokat gyakorlatilag nem én készítettem. Ezek külön-külön megtalálhatók az alább felsorolt linkeken. Az én "alkotásom" annyi, hogy ezeket egyesítettem és szinkronizáltam egy projektben. A program működése megtalálható az audioconv.rar file-ban található "_Olvassel.txt"-ben.

Felhasznált linkek:
[link]
[link]
[link]
[link]

Jó programoz(gat)ást kívánok mindenkinek!

http://www.bferi.hu/download.php ; http://bferi.hu/egyeb.php

Copyright © 2000-2024 PROHARDVER Informatikai Kft.