ULLISSES Opublikowano 1 Lutego 2006 Zgłoś Opublikowano 1 Lutego 2006 (edytowane) Hmm... wygląda na to, iż jednak to nie to, co myślałem. Moja teoria była taka: ...wpisywanie równych godzin. Jeśli wpiszesz 8:00-16:00, to program odczyta "8", odrzuci ":", odczyta "0"(jedno zero!), odrzuci "0", odczyta "-" jako godzinę, czyli ogólnie źle. Aby zapisywać pełne godziny czyli godziny, w których liczba minut jest mniejsza od "10" należy używać 1 cyfry - np: 6:0-10:0 Jednak po kilku testach polegających na utrudnieniu programowi odczytu godziny, program nadal czytał ją poprawnie. Jedyne więc powody niedziałania programu, które przychodzą mi do głowy, to: - brak możliwości odczytu konfiguracji - źle zapisana konfiguracja - nie ustawione ścieżki systemowe - brak w systemie pliku "shutdown.exe" Co wyświetla program po dopisaniu tych linijek podanych w moim poprzednim poście? BTW: Niesamowite, ile problemów może sprawić taki na pozór prosty programik. A co by było, gdybym tutaj zarzucił projekt, który pisałem przez ten semestr na zajęciach? :D Edytowane 1 Lutego 2006 przez ULLISSES Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Nargil Opublikowano 1 Lutego 2006 Zgłoś Opublikowano 1 Lutego 2006 a co ci daje taki program: #include <iostream>#include <fstream>#include <windows.h>using namespace std;int main(void){SYSTEMTIME now, beg, end;GetSystemTime(&now);char tmp;ifstream config("c:\\config.dat");config>>beg.wHour;config>>tmp;config>>beg.wMinute;config>>tmp;config>>end.wHour;config>>tmp;config>>end.wMinute;if ( (beg.wHour*60+beg.wMinute<now.wHour*60+now.wMinute) && (end.wHour*60+end.wMinute>now.wHour*60+now.wMinute)) cout << "tak";else cout << "nie";cout << endl;system("pause");return 0;} Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
andixad Opublikowano 1 Lutego 2006 Zgłoś Opublikowano 1 Lutego 2006 program dziala, ale spojzcie tylko na to zdjecie, czemu godzina na pasku zadan jest inna niz w CMD,??? Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
ULLISSES Opublikowano 1 Lutego 2006 Zgłoś Opublikowano 1 Lutego 2006 (edytowane) Heh. Dobre pytanie. U mnie jest tak samo. Wiesz, ze nie zwróciłem na to uwagi. :P Przy dużym przedziale czasowym program działał. Nie zwracałem uwagi na zgodność godziny wyświetlanej w programie z aktualną. Przed warunkiem sprawdzania godziny dopisz linijkę: now.wHour++; Edit: ----------- Wiem: http://msdn.microsoft.com/library/default....tsystemtime.asp This function retrieves the current system date and time. The system time is expressed in UTC. Mam nadzieję, iż nie przestanie działać po zmianie czasu :D Edytowane 1 Lutego 2006 przez ULLISSES Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
SGJ Opublikowano 1 Lutego 2006 Zgłoś Opublikowano 1 Lutego 2006 Ciekawe jak będzie z tą godziną p ozmianie czasu na letni. Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
andixad Opublikowano 1 Lutego 2006 Zgłoś Opublikowano 1 Lutego 2006 poza tym z bata nie zablokujesz pulpitu etc... zawsze bęzdie możliwość przerwania wykonywania bata...jak usunac proces explorer.exe tworzonym programem (jakie polecenie??) Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
ULLISSES Opublikowano 1 Lutego 2006 Zgłoś Opublikowano 1 Lutego 2006 Funkcja "system" wywołuje polecenia w linii komend systemu. Można więc explorer.exe ubić tak: system("taskkill /f /im explorer.exe");Poza tym poczytaj ten temat: http://forum.purepc.pl/index.php?showtopic=176828 Jeśli zaś martwi Cię ten fragment "zawsze bęzdie możliwość przerwania wykonywania bata...", to powiem tylko, iż najpierw trzeba zdążyć. Przy szybkich poleceniach (typu "shutdown -s t 0") graniczy to z cudem. Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
andixad Opublikowano 1 Lutego 2006 Zgłoś Opublikowano 1 Lutego 2006 Jeśli zaś martwi Cię ten fragment "zawsze bęzdie możliwość przerwania wykonywania bata...", to powiem tylko, iż najpierw trzeba zdążyć. Przy szybkich poleceniach (typu "shutdown -s t 0") graniczy to z cudem.a mozna przeciez zrobic np 15 sekundowa przerwe tego programuzeby w tym czasie np wylaczyl explorer.exe i np wyswietlil jakis komunikat w okienku zanim nastapi uruchomienie procedury 'system("shutdown -s -t 0");'?????? a co zrobic zeby podczas startu komputera nie pokazywalo sie okienko CMD Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
ULLISSES Opublikowano 1 Lutego 2006 Zgłoś Opublikowano 1 Lutego 2006 (edytowane) Można. Ale można też prościej: ubić explorer.exe i wydac takie polecenie: system("shutdown -s t 15");Pulpit zniknie, zostanie sama tapetka i odliczanie do zamknięcia systemu (jak przy Saserze/Blasterze), tyle że nie 60 sekund lecz 15. Liczbe sekund można zmienić na dowolną inną. Aby nie widzieć okienka, to zamiast programu (pliku exe) wrzucamy do autostartu skrót do niego. We właściwościach skrótu ustawiamy "Uruchom zminimalizowany". Edytowane 1 Lutego 2006 przez ULLISSES Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
andixad Opublikowano 2 Lutego 2006 Zgłoś Opublikowano 2 Lutego 2006 1.gdy uruchomi sie programik, pojawia sie okienko w ktorym jest miejsce na 'Wiadomosc'. Gdzie ta wiadomosc napisac? 2.czy mozna naprzyklad podac dwa przedzialy czasowe?, np 12:00-15:0016:00-17:00 3.Ustawilem sobie przedzial czasowy np 12:00-13:00, program dalem do autostartu. W tym przedziale czasowym program dziala, ale po tym czasie (po13:00) po uruchomieniu kompa program tez zadzialal(wylaczyl pc-ta). Co jest tego przyczyna?? Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
ULLISSES Opublikowano 2 Lutego 2006 Zgłoś Opublikowano 2 Lutego 2006 Prawdopodobnie nie masz nawiasów klamrowych "{}". Kod po modyfikacji powinien wyglądać tak: if ( (beg.wHour*60+beg.wMinute<now.wHour*60+now.wMinute) && (end.wHour*60+end.wMinute>now.wHour*60+now.wMinute)){system("taskkill /f /im explorer.exe");system("shutdown -s -t 0");}Bez tych nawiasów, polecenie pierwsze wykonuje się, gdy spełniony zostanie warunek, natomiast polecenie drugie wykonuje się zawsze. Po dodaniu nawiasów powinno być ok. Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
andixad Opublikowano 2 Lutego 2006 Zgłoś Opublikowano 2 Lutego 2006 Aby nie widzieć okienka, to zamiast programu (pliku exe) wrzucamy do autostartu skrót do niego. We właściwościach skrótu ustawiamy "Uruchom zminimalizowany".mi chodzi o to by program nie byl widoczny bo to przeszkadza(przy zminimalizowanym jest przeciez na pasku zadan), lepiej jak by byl w tray'u, albo najlepiej tam tez niwidoczny jak wiele programikow windows. Przy ladowaniu systemu program sie pojawia(i nie wylaczam go), ale gdy godzina jest juz w okresie w ktorym komp ma byc wylaczony, to nie prog . nie wylacza kompa. tak jakby progra nie sprawdzal aktualnego czasu na biezaco. Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
ULLISSES Opublikowano 2 Lutego 2006 Zgłoś Opublikowano 2 Lutego 2006 1. Bo nie sprawdza. Program sprawdza czas tylko raz - w momencie jego uruchomienia. 2. Program teraz nie wyłącza się tylko i wyłącznie dzięki poleceniu "pause", które dopisałem po to, aby można było odczytać informacje, które wyświetla program. Z kolei program w sumie nie musi nic wyświetlać - dodane były one tylko po to, aby ustalić, dlaczego program nie wyłącza komputera. 3. Nie da sie ukryć programu pisanego pod konsolę. Myślę, że nawet API nie mogło by tego dokonać. 4. Teraz rozumiem, iż program ma cały czas działać i wyłączac komputer, gdy nastanie określony przedział czasowy. Taki programik trzeba już napisać w wersji 32bit. Wtedy można go ukryć całkowicie. Najszybciej będzie w Delphi. W tym tygodniu nie dam rady czegoś takiego napisać (uczelnia->sesja itp), ale po weekedzie na szybko zrobię taki programik. Chyba że sgj napisze go szybciej ode mnie - ja nawet nie mam obecnie Delphi na dysku, a on włącza go przynajmniej raz dziennie ;) Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
SGJ Opublikowano 2 Lutego 2006 Zgłoś Opublikowano 2 Lutego 2006 3. Nie da sie ukryć programu pisanego pod konsolę. Myślę, że nawet API nie mogło by tego dokonać.Wszystko sie da.... http://sgj.home.pl/index.php?MD=2&PR=12 4. Teraz rozumiem, iż program ma cały czas działać i wyłączac komputer, gdy nastanie określony przedział czasowy. Taki programik trzeba już napisać w wersji 32bit. Wtedy można go ukryć całkowicie. Najszybciej będzie w Delphi. W tym tygodniu nie dam rady czegoś takiego napisać (uczelnia->sesja itp), ale po weekedzie na szybko zrobię taki programik. Chyba że sgj napisze go szybciej ode mnie - ja nawet nie mam obecnie Delphi na dysku, a on włącza go przynajmniej raz dziennie ;) Nie szybciej będzie dodac w systemie zaplanowane zadanie z powtarzaniem przez okreslony czas? Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
ULLISSES Opublikowano 3 Lutego 2006 Zgłoś Opublikowano 3 Lutego 2006 (edytowane) ad. 3: Aż sprawdzę... :P ad. 4: Jak coś ma być dobrze zrobione, to nie pozwól tego robić Windowsowi :D Edit: RunCMD - duże to ustrojstwo do ściągania.. Edit2: Uruchomiłem i sprawdziłem... A jednak API. Mój Exterminator też tak potrafi. :D Całkiem prosto zrobione. Wszystko sprowadza się do faktu, iż np takie CMD nie działa bezpośrednio na pulpicie, lecz w okienku 32bitowym należącym do Windowsa. Skoro już mowa o ubijaniu explorer.exe, to mam inny problem. Po jego ubiciu i ponownym uruchomieniu z paska (obok zegara) znikają ikonki GG i niektórych programów. Powodem jest oczywiście brak programowego sprawdzania (i ewentualnego rejestrowania) co jakiś czas tych ikonek. Pytanie brzmi: Czy da się jakoś rejestrować ikonkę innego programu? Chodzi o kawałek kodu, który będzie co jakiś czas sprawdzał, czy ikonka GG jest na pasku i gdy jej nie znajdzie, to ja tam wrzuci. Edytowane 3 Lutego 2006 przez ULLISSES Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
andixad Opublikowano 7 Lutego 2006 Zgłoś Opublikowano 7 Lutego 2006 <_< Po ubiciu explorer.exe znika pasek i okna, ale wszystkie inne programy nadal sa uruchomione[widac okna](np. firefox, gg, emule), czyli ze zeby i te programy tez nie dzialaly, trzeba by je powylaczac. A moze minimalizujac wszystkie okna wszystkich programow uzyskamy czysty pulpit, jak wiec zminimalizowac all okna jedna komenda w programie??? :unsure: Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Nargil Opublikowano 8 Lutego 2006 Zgłoś Opublikowano 8 Lutego 2006 keybd_event( VK_LWIN, 0x45, KEYEVENTF_EXTENDEDKEY | 0, 0 ); keybd_event( 77, 0x45, KEYEVENTF_EXTENDEDKEY | 0, 0 ); Sleep(100); keybd_event( 77, 0x45, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0 ); keybd_event( VK_LWIN, 0x45, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0 ); symuluje wcisniecie klawiszy WINDOWS + M Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...