-
Mobilarena
Új hozzászólás Aktív témák
-
sghc_toma
senior tag
válasz
VladimirR #3769 üzenetére
hmm, azt hiszem, az elozo hsz-edben felreertettem valamit: most akkor ha masolod a user32.dll-t, akkor az egermozgatas is megy? ha igy van, akkor a hsz-em DirectInput-os resze nyilvan tokfoloslegesen van ott
nem hagyott nyugodni a dolog, keresgeltem.. talaltam neten egy listat a GG altal hook-olt API-krol.. ezek kozt ott van ugye a SendMessage es a PostMessage, de nincs koztuk a PostThreadMessage es a SendNotifyMessage.. elkepzelheto, hogy ez a ket API hasznalja a masik kettot, es akkor ugyanugy nem mukodnek, de egy probat meger szerintem..
PostThreadMessage kicsit problemas, mert nem tudod, melyik szalnak kell kuldeni az uzenetet.. erre csunya, de valoszinuleg mukodo megoldas, ha felsoroltatod az osszes szalat, es mindnek kikuldod:DWORD pid;
GetWindowThreadProcessId(hWnd, &pid);
HANDLE hThreadSnapShot = CreateToolhelp32Snapshot(TH32CS_SNAPTHREAD, pid);
if (hThreadSnapShot != INVALID_HANDLE_VALUE)
{
THREADENTRY32 te;
te.dwSize = sizeof(THREADENTRY32);
if (Thread32First(hThreadSnapShot, &te))
{
do
{
if (te.th32OwnerProcessID == pid)
{
PostThreadMessage(te.th32ThreadID, WM_KEYDOWN, VK_RIGHT, 0);
}
} while(Thread32Next(hThreadSnapShot, &te));
}
CloseHandle(hThreadSnapShot);
}btw, milyen jatek? a kedd vizsga utani resze pihi, lehet ranezek..
-
sghc_toma
senior tag
válasz
VladimirR #3766 üzenetére
nincs mit, orulok, hogy sikerult megoldani..
par eve egy havernak monyakoltam ossze X3-hoz valami kis cheat-et, ahhoz a keybd_event, es a mouse_event API-kat hasznaltam.. azota ezeket felvaltotta a SendInput.. ezeket meg lehetne probalni, bar vegso soron ok is csak uzeneteket pakolnak a message queue-ba..
az altalad probaltakon kivul mas egeresemeny, ami mozgast vagy klikket jelez, nincsen.. (illetve vannak a nonclient valtozatok, de az most nem jatszik)
a gaz az, hogy siman elkezelheto, hogy az alkalmazas mondjuk DirectInput-on keresztul kezeli le a bill/eger esemenyeket*, es akkor nem sokra mesz a SendMessage/PostMessage fv.-ekkel..
a sajat user32.dll trukk tetszik
nem ismerem a GameGuard-ot, de ennel egyszerubb anti-hook megoldast nem tudok elkepzelni..
esetleg meg megoldas lehet a megfelelo DirectX API fv-ek hook-olasa (szerintem Detours-szal megoldhato), de annak kideritese, hogy miket kene hook-olni, eleg korulmenyes..
ha meg eszembe jut valami esetleg, irok...
* illetve bill-t ebben az esetben nem, hiszen mukodik a SendMessage...
-
sghc_toma
senior tag
válasz
VladimirR #3764 üzenetére
ehh, en meg nem vettem figyelembe, hogy GG vedi a cuccot.. rakerestem gyorsan, valoban hook-olja a GetPixel-t.. az, hogy XP-n mukodik, bug-nak nez ki; sajnos kedden numanal zh, nincs tul sok idom, pedig szivesen beleneznek a lelkebe a draganak..
GetBitmapBits ha jol emlekszem deprecated, bar az teny, hogy joval baratsagosabbnak nez ki (2 - vagy 3?, nem emlekszem - argumentum vs sok), mint a GetDIBBits..
RFC 1149 implementacio: no comment
-
sghc_toma
senior tag
válasz
VladimirR #3762 üzenetére
ok, azt hittem, valahogy CreateDC-vel csinaltad CreateCompatibleDC helyett.. mukodnie kene, nem vagom, miert hasal el a GetPixel..
esetleg megprobalhatod a GetDIBBits fv-t..// off: ez az RFC 1149 nagyon allat
-
sghc_toma
senior tag
válasz
VladimirR #3759 üzenetére
a kerdesedre nem tudok valaszolni, szerintem meg sose hasznaltam a CreateDC-t.. ha egy ablak kepet kell blittelni egy memo-ban levo DC-be, azt igy szokas csinalni, esetleg probald ki, hatha jo lesz:
HDC hdcWnd = GetWindowDC(hWnd); // or GetDC to get a DC for just the client area
HDC hdcMem = CreateCompatibleDC(hdcWnd);
HBITMAP hBmp = CreateCompatibleBitmap(hdcWnd, w, h);
HBTIMAP hOldBmp = (HBITMAP)SelectObject(hdcMem, hBmp);
BitBlt(hdcMem, 0, 0, w, h, hdcWnd, 0, 0, SRCCOPY);
// ...
SelectObject(hdcMem, hOldBmp);
DeleteObject(hBmp);
DeleteDC(hdcMem);
ReleaseDC(hWnd, hdcWnd); -
sghc_toma
senior tag
válasz
Draut_HeV #3738 üzenetére
mindenkeppen C-ben szeretned megoldani? a C++-os string-et nem hasznalhatod? azzal igy meg lehet oldani:
#include <iostream>
using std::string;
// ...
string str = "<H1>Valami szoveg</H1>\n<H2>(Masik szoveg)</H2>";
size_t i = str.find("</H1>\n<H2>");
string str1 = str.substr(4, i - 4);
string str2 = str.substr(i + 11, str.length() - i - 17);
// ... -
sghc_toma
senior tag
válasz
Draut_HeV #3722 üzenetére
biztonsagosabb, mert ved a buffer overflow-k ellen azzal, hogy meg kell adni mereteket a fuggvenyeknek..
idezet az MSDN Library idevago oldalarol:
"The main difference between the secure functions (with the _s suffix) and the older functions is that the secure functions require the size of each c, C, s, S and [ type field to be passed as an argument immediately following the variable."
ennek megfeleloen az utolso sor igy nez ki helyesen fscanf_s-sel:fscanf_s(file, "%[^\t] \t %[^\t] \t %[^\t] \t %d \n", adat0, 64, adat1, 128, adat2, 256, &i);
-
sghc_toma
senior tag
doc (#3712): int-rol float-ra tortent konverzio, igy adatvesztes lehetosege nem allt fenn, szerintem ilyenkor nem szoktak warning-olni a forditok..
Fire/SOUL/CD(#3715): akar kiskutyat is hasznalhatsz cilusszamlalonak
#include <iostream>
class Kiskutya
{
int a;
public:
Kiskutya(int a) { this->a = a; }
bool operator< (Kiskutya & k) { return a < k.a; }
void operator++ () { this->a++; }
};
int main(int argc, char* argv[])
{
Kiskutya kk(5);
for (Kiskutya i(0); i < kk; ++i)
std::cout << "*";
return 0;
} -
sghc_toma
senior tag
kikuld minden top-level ablaknak egy WM_DEVICECHANGE uzenetet DBT_DEVICEARRIVAL ertekkel a wParam-ban..
-
sghc_toma
senior tag
válasz
HThomas #3647 üzenetére
Hello!
Először is létrehozod a buffert:
ID3D10Buffer * g_pCBuffer;
// Fill a buffer description structure
D3D10_BUFFER_DESC cbDesc;
cbDesc.BindFlags = D3D10_BIND_CONSTANT_BUFFER;
cbDesc.ByteWidth = sizeof(D3DXVECTOR4) * 100;
cbDesc.CPUAccessFlags = D3D10_CPU_ACCESS_WRITE;
cbDesc.MiscFlags = 0;
cbDesc.Usage = D3D10_USAGE_DYNAMIC;
// Create the buffer
g_pd3dDevice->CreateBuffer(&cbDesc, NULL, &g_pCBuffer);
// Tell the device that we want to use the buffer
g_pd3dDevice->PSSetConstantBuffers(0, 1, &g_pCBuffer);Aztán az .fx fájlban (vagy ha nem használod az effekt frameworkot akkor értelemszerűen a pixel shader-ed forrásában) létrehozol egy konstans buffer változót:
cbuffer MyConstantBuffer
{
float4 Coordinates[100];
};A buffer adatait a shader-ből simán a Coordinates változót használva éred el.
A CPU-ról a bufferbe így tudsz másolni:
D3DXVECTOR4 * data;
// Map buffer to system memory
g_pCBuffer->Map(D3D10_MAP_WRITE_DISCARD, NULL, (void **)&data);
// Fill the buffer
for (int i = 0; i < 100; ++i)
{
data[i].x = 1.0f;
data[i].y = 0.0f;
data[i].z = 1.0f;
data[i].w = 0.0f
}
// Unmap buffer
g_pCBuffer->Unmap();Természetesen a for ciklus helyett úgy töltöd fel a tömböt, ahogy csak akarod (memcpy, például).
Remélem tudtam segíteni. Ja, még valami, amire figyelned kell: egy konstans buffer-ben max 4096db 4*32 bites vektor lehet, és a pixel shader-hez max 14 db cbuffer-t köthetsz.
-
sghc_toma
senior tag
Nem tudom, milyen project-et hoztál létre, de szerintem ott lesz valami gebasz.
Csináld így:
File -> New -> Project -> General -> Empty project
Ha ez megvan, Project -> Add new item -> C++ code, és a file-nak adj meg .c kiterjesztést. Igazából ez nem is szükséges, de kényelmes, mert a cl (a VS compilere) a .c kiterjesztésű file-okat automatikusan C kódként fordítja. Ha nem .c kiterjesztést adsz meg, akkor a Project Properties -> C/C++ -> Advanced -> Compile As -t beállíthatod "Compile as C Code (/TC)"-re, amivel mindenféle kiterjesztésű forrást C-ként fordít.cucka (#3624): egy C++ compiler-nek nem lehet gondja plain C kóddal...
-
sghc_toma
senior tag
-
sghc_toma
senior tag
neked legalább volt számtech szakkör.. én az első "nagyobb" programom leírása után pár évvel tudtam csak bepötyögni.. volt is benne jó sok hiba.. de kijavítottam őket, és tök jó volt látni a működő JHC-féle Életjátékot..
akkoriban jó sok ember hitte, hogy nem vagyok normális: az udvaron ülve, magamban beszélve (ezt a mai napig csinálom programozás közben) krikszkrakszokat írogattam a füzetembe egy piros filccel -
sghc_toma
senior tag
válasz
kicsitomi88 #3229 üzenetére
úgy álltam neki programozni tanulni, hogy abszolut nem volt számítógép a közelemben.. GOTO könyvtár, cipeltem haza a könyveket, tanultam, és papír/filctoll toolchain-nel programoztam PASCAL nyelven.. ritka szar volt..
szerintem egy kezdőnek igenis szüksége van a sikerélményre, szüksége van arra, hogy lássa a Hello World!-öt a képernyőn, és tudja, hogy azt ő csinálta.. ha valami nem tiszta neki a könyvből, pötyög pár sort, és kipróbálja.. persze csak akkor, ha tényleg érdekli a dolog, és tanulni akar..
ha valaki nekiáll OOP nyelven tanulni, és érdekelni kezdi a dolog, úgyis eljut arra a szintre, hogy megérti, mi hogyan működik..
-
sghc_toma
senior tag
válasz
kicsitomi88 #3226 üzenetére
Miért? Mivel nem OOP nyelvvel kezdtem, nem tudom megmondani, hogy milyen lett volna azzal kezdeni, de szerintem nem elképzelhetetlen, hogy valaki már az elején az objektumos szemléletmódot sajátítsa el.. A relisoft.com-on van is egy jó C++ tutorial.. Még a Hello World! is OOP
-
sghc_toma
senior tag
megpróbálod megnyitni a file-t olvasásra fopen-nel, ha a visszatérési érték NULL, akkor nincs file (*), ha nem NULL, akkor van.. ezt bele egy ciklusba, és minden iterációnál vársz x másodpercet..
(*) illetve nem tuti, hogy azért nem sikerült az fopen, mert nincs meg a file, de ettől függetlenül szerintem ez egy egész jó módszer....
-
sghc_toma
senior tag
válasz
kicsitomi88 #2934 üzenetére
rtfhsz#2928
-
sghc_toma
senior tag
válasz
Speeedfire #2762 üzenetére
attól még így néz ki egy main fv.. nem muszáj kihasználni az argc-t, meg az argv-t, de helyesen így néz ki.. amúgy ha elhagyod a paraméterlistát, azért nem rinyál a mingw, de a visszatérési értéknek int-nek kell lennie..
-
sghc_toma
senior tag
válasz
Speeedfire #2758 üzenetére
a main helyesen valahogy így néz ki:
int main(int argc, char* argv[]) {}
most néztem, a clrscr() nincs is bent a MinGW-s conio.h-ban, szóval nemhogy nem jelenik meg a ''dosos ablak'', mégcsak le sem ferdül a progi.. elvileg... amúgy system(''cls'') is megfelel a feladatra, bár kicsit nem hatékony (új processzt indít, ugye..) -
sghc_toma
senior tag
válasz
Speeedfire #2756 üzenetére
code::blocks alapból uazt a fordítót (MinGW) használja, mint a dev-c++, szal az is sírni fog az említett dolgok miatt.. de sztem a vc sem enged void main-t..
btw, mért gáz, hogy szól neked, hogy a main fv. bizony nem úgy néz ki, ahogy kéne neki?
[Szerkesztve] -
sghc_toma
senior tag
uhh, én ezt a problémát asszem félreértettem.. úgy értettem a dolgot, hogy a stringben a szám hexadecimális alakban van tárolva (0..9, A..F jegyekkel).. így ugye egy 4 byte-os string-be 2 byte-nyi egész fér, és a little endian miatt az első byte a 16-osok, a második az 1-esek, a harmadik a 4096-osok, a negyedik pedig a 256-osok..
-
sghc_toma
senior tag
mért akarod mindenképp elkerülni a konverziót?
strtol-lal konvertálsz int-té, itoa-val meg vissza.. én vhogy így csinálnám, aztán lehet, hogy tényleg van jobb megoldás.. (az is lehet. hogy ez az egyik legrosszabb)
char* HexNumber = ''CDAB'';
char* FirstTwoBytes;
memcpy(FirstTwoBytes, HexNumber, 2);
int a = strtol(HexNumber + 2, NULL, 16) * 128 + (int)(strtol(FirstTwoBytes, NULL, 16) / 2);
char buf[4];
HexNumber = itoa(a, buf, 16);
memcpy(FirstTwoBytes, HexNumber + 2, 2);
memcpy(HexNumber + 2, HexNumber, 2);
memcpy(HexNumber, FirstTwoBytes, 2); -
sghc_toma
senior tag
elvileg word határra igazít alapból, ami ugye 4 byte.. ezért is írtam, hogy 1,2,3,4 byte-os tömbnél okés a 4 byte.. 5 byte-osnál viszont 8-nak illene lennie.. főleg úgy, hogy 8 byte-osnál ugye csak 8-at foglal le..
más progiknál tűnt fel, hogy nincs minden rendben a lefoglalt memóriával kapcsolatban, és kíváncsi lettem.. ezért debugolgatom ezt a kis szösszenetet.. -
sghc_toma
senior tag
van egy tök minimális program:
void function()
{
char buffer[5];
}
int main(int argc, char* argv[])
{
function();
return(0);
}
a ''function()'' fv.-t gdb-vel disassemblálva (ejj, de szép szó..), a következőt kapom:
push %ebp
mov %esp, %ebp
sub $0x18, %esp
leave
ret
a kérdésem: mi az oka annak, hogy egy 5 byte méretű tömbhöz lefoglal 24 byte-ot? 1,2,3, illetve 4 byte méretűhöz 4 byte-ot foglal, ez így oké.. 5,6,7-hez 24-et, 8-hoz 8-at, 9,10,11,12,13,14,15,16-hoz megint 24-et.. nem értem
ja, még vmi: 3.4.6-os gcc-vel fordítottam..
[Szerkesztve] -
sghc_toma
senior tag
TTK-n vagyok informatikus vegyész szakon, itt kellett fortran-t tanulni, mert rengeteg szimulációs és mérőprogi fortran nyelven íródott.. szeretek számomra új dolgokat megismerni, először örültem is, hogy fortran-t fogunk tanulni.. aztán a beadandók írása közben szép lassan háát.. mondjuk úgy, hogy egy idő után már nem örültem annyira
aztán mikor letelt a két félév, jöttek a szomszéd meteorológus-lányok, hogy hát nekik most van vmi programozás tárgyuk, és segítsek lécci, mert nekik fogalmuk sincs az egészről... hát persze, hogy fortran-t tanultak... -
sghc_toma
senior tag
válasz
-=Lord Tom=- #1745 üzenetére
én így olvasnám be az életkort:
do
{
cout << ''How old are you?'';
cin >> age;
} while (age < 0);
Új hozzászólás Aktív témák
Hirdetés
● olvasd el a téma összefoglalót!
- Milyen belső merevlemezt vegyek?
- Asztalos klub
- Milyen CPU léghűtést vegyek?
- Stellar Blade
- Nintendo Switch 2
- Kávé kezdőknek - amatőr koffeinisták anonim klubja
- Moderátort keresek a fórumhoz!
- Milyen légkondit a lakásba?
- Megjelent a Poco F7, eurós ára is van már
- Kevesebb dolgozó kell az Amazonnak, AI veszi át a rutinfeladatokat
- További aktív témák...
- Easun iSolar SMW 11kW Twin Hibrid inverter // Dupla MPPT // BMS // WiFi
- GAMER PC : RYZEN 7 5700G/// 32 GB DDR4 /// RX 6700 XT 12 GB /// 512 GB NVME
- GAMER MSI LAPTOP : 15,6" 144 HZ /// i5 12450H /// 16GB DDR4/// RTX 4050 6GB/// 1TB NVME
- Manfrotto 055 magnézium fotó-videófej Q5 gyorskioldóval
- Sony ECM-W2BT
- AKCIÓ! ASUS PRIME Z390-P i5 8600K 16GB DDR4 512GB SSD RX 6600 8GB GDDR6 DEEPCOOL Matrexx55 630W
- Lenovo Thinkpad P16 G2 - i9-13980HX, 64GB, 1TB SSD, 16" WQUXGA (3840 2400), RTX 4090 (ELKELT)
- BESZÁMÍTÁS! MSI Z370 i5 9500 16GB DDR4 512GB SSD RX6600 8GB Cooler Master MB510L Chieftec 500W
- Bomba ár! Lenovo ThinkPad E550 - i5-5GEN I 8GB I 256SSD I DVDRW I 15,6" HD I CAM I W10 I Garancia
- Bomba ár! Dell Latitude 7320 - i5-11GEN I 8GB I 512SSD I HDMI I 13,3" FHD I Cam I W11 I Garancia!
Állásajánlatok
Cég: Promenade Publishing House Kft.
Város: Budapest
Cég: PC Trade Systems Kft.
Város: Szeged