Skocz do zawartości

Doc

Członkowie
  • Postów

    0
  • Dołączył

  • Ostatnio

    Nigdy

Wszystko napisane przez Doc

  1. Pawiem ci tak: Wielowątkowość to sciema. W rezultacie każdy wątek, proces itp są uruchomione w pewnym czasie i to się odbywa na zasadzie przełączania procesów i wątków. Każdy otrzymuje określoną ilość czasu na wykonanie zależną od priorytetu ( mniej więcej ). Ale motyw jest taki że na przełączanie tych wątków też się zużywa pewną ilość mocy procesora. Generalnie zasada jest taka: Jeżeli nie potrzebny ci jakiś wątek to go nie rób bo spowolnisz tylko system. A co do materiałów to w każdej książce o programowaniu w WINAPI coś powinno być. Ja troche czytałem o tym w "MFC - czarna księga" czy coś takiego. Ale nie warto jej kupywać dla samego tego tematu :P
  2. Doc

    Operatory

    Zgadzam sie ale nie można zrobić funkcji składowej żeby możliwe było działanie nie takie CVector v; // // tu inne rzeczy // CVector v1 = v*12.0f; ale takie CVector v; // //tu inne rzeczy // CVector v1 = 12.0f*v; // tu błąd wywali bo funkcja składowa przyjmuje parametry poprzez this i zmienną float. Wtedy trzeba zaprzyjaźniać. A jak sie napisze friend w ciele klasy to to nie będzie funkcja składowa tylko normalna jeżeli sie nie myle( ale moge sie mylic). Taki jest moje skromne zdanie.
  3. Doc

    Operatory

    Dzieki za odpowiedz. Macie racje trzeba albo jeden argument albo zaprzyjaźnic albo globalną. A zaprzyjaźnianie nie jest bez sensu bo funkcja globalna nie ma dostepu do pul niepublicznych klasy.
  4. Doc

    Operatory

    Problem jest z podstaw programowania ale jest. Chciałem napisac klase CVector następującej treści: class CVector { float x; float y; float z; CVector operator*( float r ) { x*=r; y*=r; z*=r; return (*this); } CVector operator*( float r, CVector& a ) // tu wywala bland { return (a*r); } }; oczywiście to nie cala klasa. Chodzi o to że przy zaznaczonym fragmencie wywala mi VC6 bland deklaracji, a mianowicie że ten operator musi zostać zadeklarowany jednoargumentowo. Patrzyłem w książkach i nawet w bibliotekach samego VC6 i jest to tam zadeklarowane podobnie tylko że operator '+' ( u mnie tez nie dziala ), i te operatory deklarowane w innych bibliotekach dzialaja. Może coś żle robie ( a jak znam siebie to pewnie tak ). Może ktoś wie co jest nie tak??? Za uwagi z góry thenx. P.S: Sprawdzalem w forum nie ma takiego tematu :/
  5. Dzieki za odpowiedz. Wiele mi wyjasnilo bo nie wiedzialem o tym motywie, ale czemu jak przypisuje się liczbę np. 4.123 do zmiennej double to czemu są takie motywy. Przecież to jest liczba określona jednoznacznie bez żadnych śmieci na końcu???
  6. Sorry zżeniłem tutaj, nie mialem dostepu do swojego zródła i dlatego. Tak na prawde to jest taki motyw jak następuje: double liczba = 0.412; double calosci,ulamki; cout << "wartosc poczatkowa liczba=" << liczba << endl; cout << endl; do { liczba *= 10.0; ulamki = modf( liczba, &calosci ); cout << "liczba=" << liczba << endl; cout << "calosci=" << calosci << endl; cout << "ulamki=" << ulamki << endl; cout << endl; liczba -= calosci; }while( liczba > 0.0 ); i po wywolaniu tego daje to dziwne wyniki takie jak: ( jak ktos mi powie co jest grane to bede wdzieczny) wartosc poczatkowa liczba=0.412 liczba=4.12 calosci=4 ulamki=0.12 liczba=1.2 calosci=1 ulamki=0.2 liczba=2 calosci=2 ulamki=1.06581e-014 liczba=1.06581e-013 calosci=0 ulamki=1.06581e-013 liczba=1.06581e-012 calosci=0 ulamki=1.06581e-012 liczba=1.06581e-011 calosci=0 ulamki=1.06581e-011 liczba=1.06581e-010 calosci=0 ulamki=1.06581e-010 liczba=1.06581e-009 calosci=0 ulamki=1.06581e-009 liczba=1.06581e-008 calosci=0 ulamki=1.06581e-008 liczba=1.06581e-007 calosci=0 ulamki=1.06581e-007 liczba=1.06581e-006 calosci=0 ulamki=1.06581e-006 liczba=1.06581e-005 calosci=0 ulamki=1.06581e-005 liczba=0.000106581 calosci=0 ulamki=0.000106581 liczba=0.00106581 calosci=0 ulamki=0.00106581 liczba=0.0106581 calosci=0 ulamki=0.0106581 liczba=0.106581 calosci=0 ulamki=0.106581 liczba=1.06581 calosci=1 ulamki=0.0658141 liczba=0.658141 calosci=0 ulamki=0.658141 liczba=6.58141 calosci=6 ulamki=0.58141 liczba=5.8141 calosci=5 ulamki=0.814104 liczba=8.14104 calosci=8 ulamki=0.141036 liczba=1.41036 calosci=1 ulamki=0.410364 liczba=4.10364 calosci=4 ulamki=0.10364 liczba=1.0364 calosci=1 ulamki=0.0364015 liczba=0.364015 calosci=0 ulamki=0.364015 liczba=3.64015 calosci=3 ulamki=0.64015 liczba=6.4015 calosci=6 ulamki=0.401503 liczba=4.01503 calosci=4 ulamki=0.0150279 liczba=0.150279 calosci=0 ulamki=0.150279 liczba=1.50279 calosci=1 ulamki=0.502788 liczba=5.02788 calosci=5 ulamki=0.0278807 liczba=0.278807 calosci=0 ulamki=0.278807 liczba=2.78807 calosci=2 ulamki=0.788067 liczba=7.88067 calosci=7 ulamki=0.880669 liczba=8.80669 calosci=8 ulamki=0.806686 liczba=8.06686 calosci=8 ulamki=0.066864 liczba=0.66864 calosci=0 ulamki=0.66864 liczba=6.6864 calosci=6 ulamki=0.686401 liczba=6.86401 calosci=6 ulamki=0.864014 liczba=8.64014 calosci=8 ulamki=0.640137 liczba=6.40137 calosci=6 ulamki=0.401367 liczba=4.01367 calosci=4 ulamki=0.0136719 liczba=0.136719 calosci=0 ulamki=0.136719 liczba=1.36719 calosci=1 ulamki=0.367188 liczba=3.67188 calosci=3 ulamki=0.671875 liczba=6.71875 calosci=6 ulamki=0.71875 liczba=7.1875 calosci=7 ulamki=0.1875 liczba=1.875 calosci=1 ulamki=0.875 liczba=8.75 calosci=8 ulamki=0.75 liczba=7.5 calosci=7 ulamki=0.5 liczba=5 calosci=5 ulamki=0 -- koniec-- link do projektu www.lo1.elk.edu.pl/projekt/asd.zip oraz do gotowego programu www.lo1.elk.edu.pl/projekt/asd.exe
  7. Doc

    petla czasowa

    Hmmm.... nie wiem czy warto odpowiadać bo... No właśnie ... Są sporo sposobów: 1. możesz po prostu zastosować jakąś funkje usypiania programu na 10 mili sekund ( delay, sleep ) 2. ustawić timera na 10 mili sekund ( ale to nie zawsze bedzie co 10 mili sekund ) 3. zrobić sobie oddzielny wątek ( najlepiej jak na najwyższym priorytecie ) Jest jeszcze duuuuzo sposobów. To jest tylko kilka podstawowych. Mam nadzieje ze to o to chodzilo.
  8. Jest taki problem który mnie bardzo zadziwił. Pisałem program w którym był taki oto kod: double x = 4.0; double czesc_calkowita; double czesc_ulamkowa; czesc_calkowita = modf( x, &czesc_ulamkowa ); i wszystko byloby dobrze gdyby po wykonaniu tej funkcji w czesc_calkowita byla liczba 4.0 a w czesc_ulamkowej bylo 0.0 ale jest w odpowiednio 3.0 i 0.9999999999.... CZy ktoś może mi wyjaśnić czemu??? (na VC6.0)
  9. Doc

    Pytania i dygresje :)

    Hmm.... wlasnie ze ten wskaznik jest z tskmsg a nie z mojego programu. I w ten sposob jest lipa bo nie wiem jak go uzyskać.
  10. Doc

    Pytania i dygresje :)

    A juz chcialbys wiedziec 8) Ja chce wiedziec to o co sie spytalem. Jak sie dowiem to zapodam zrodlo i sie z niego dowiesz. A jak cos to on nie zalezy od komunikatu, to jest zwykly wskaznik i ja chce ustawic pamiec na ktorom wskazuje na 1. Litosci!!! Czy nikt na prawde nie wie :?
  11. Doc

    Pytania i dygresje :)

    Po paru godzinach debugowania doszedlem do tego ze: po pierwsze szuka okna po drugie wysyla komunikat nie bede teraz pisal jak co i gdzie bo to nie ma sensu. Musze tylko wiedziec jak ustawic ten ostatni parametr na jeden albo ewentualnie skad go wziasc bo nigdzie nie moge znalesc opisu dokladnego funkcji SendMessageTimout. Czy teraz jasne????
  12. Doc

    taki sam

    Dzieki za przywitanie a co do mojej pomylki to juz schylilem glowe i uznalem swojom wine :P
  13. Doc

    taki sam

    jakos nie doczytalem, kazdemu sie zdarza co nie ???
  14. Doc

    taki sam

    Jest jeszcze inny sposob. Mozna zrobic se mutexa. Gdy kopia bedzie chciala uruchomic to po prubie zrobienia muteksa sprawdzic GetLastError() czy jest ruwny ERROR_ALREADY_EXIST jezeli tak to znaczy ze program jest juz uruchomiony. Na koncy programu zwalniamy se mutex i wszystko gra. Jeszcze mozna semaforow uzyc ale nie pamietam tera jak to sie robi. Jak interesuje cie to napisz na meila.
  15. Doc

    Pytania i dygresje :)

    Hmmmm..... spoon mi nie o trojana chodzi tylko o to by zablokowac mozliwosc uruchamiania task menedzera. O co mi chodzi to napisalem na samym poczatku ale moge jeszcze raz :) tylko troche jasniej. A wiec: W pewnym momencie taskmgr znajduje okno o tytule "Menedżer zadań Windows" czy coś takiego. A nastepnie wysyła za pomocą funkcji SendMessageTimeout komunikat. Chodzi mi o ostatni parametr czyli pdwResult ktory jak dobrze zrozumialem zawiera kod zwracany przez funkje obslugi okna do ktorego zostala wyslana wiadomosc, ale to jakas lipa bo obojetnie co zwroce to *pdwResult == 0 a jak to zwraca taskmgr to jest 1 i moje pytanie jest takie: Jak ustawic tom zmienom na 1??? Juz jasniej sie chyba nie da tego napisac :) Bylbym baaaaaaaaaardzo wdzieczny za pomoc.
  16. Doc

    Pytania i dygresje :)

    Dobra dobra spoon ale jak wiesz malo prawdopodobne jest ukrycie programu z listy procesów. Lepiej powiedz jak dziala funkcja SendMessageTimeout w msdn nie wiele bylo. Lepiej zablokowa task menedzera niz nic nie muc zrobic no nie???? :) Oczywiscie mozna zamknac okno taskmgr ale kto by sie w to bawil jak kazdy to moze zrobic ale zrobic zeby sie nie uruchamial to jest cos :) no nie????
  17. Doc

    Pytania i dygresje :)

    Dzieki za linka. Jak tylko ktos mi to przetlumaczy to wezme sie do roboty ;P (Zart oczywiscie heh ) ale na serio jak tylko cos mi z tego wyjdzie to zamieszcze troche kodu (jesli ktos wogole jest zainteresowany ???)
  18. Doc

    Pytania i dygresje :)

    Witam! Mam pare pytań i uwag. Na wstępie chciałbym się zapytać skąd (jeśli wogóle gdzieś jest ) można sciagnac dokumentacja WinApi, poniewaz posiadam nienajbardziej orginalnego VC++ i niestety plytek z helpem nie mam. Jeszcze co mnie trapi to takie jedno pytanko, a raczej problem: jest taki program ktory nazywa sie taskmgr.exe ( Menedzer zadan :) ) wiec wpadlem na pomysl jak go zablokowac w XP a mianowicie: Jezeli jest uruchomiony to mozna tak po prostu po chamsku znalesc jego okno i przez funkcje FindWindow i wyslac WM_CLOSE ( funkcja DestoyWindow zamiast WM_CLOSE tez dziala ). I tu wszystko jasne piekne. Ale zaczyna sie gorka. Teraz trzeba utworzyc okno o nazwie "Menedżer zadań Windows" poniewaz menedzer zadan wykrywa swoja obecnosc poprzez znalezienie okna o tym tytule. Okno moze byc ukryte. Teraz wysyla komunikat do znalezionego okna za pomoca funkcji SendMesageTimeout. 4 pierwsze parametry to hwnd, msg, wparam, lparam, oraz wysyla jeszcze jakies parametry flage i jakis wskaznik. Caly problem polega na tym ze nie mozna tego wskaznika pobraz bo nie ma go ani w wparam, ani w lparam. Jak ktos moze mi powiedziec jak obsluzyc taki komunikat z SendMessageTimeout to bede wdzieczny. Sypne tez gotowym kodem jak zablokowac menedzera. Mam jeszcze pare pytan ale narazie poskromie swoja ciekawosc :P Za pomoc thanks
×
×
  • Utwórz nowe...