While a checkBox – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

While a checkBox – C / C++ – Fórum – Programujte.comWhile a checkBox – C / C++ – Fórum – Programujte.com

 

Kalir44
~ Anonymní uživatel
16 příspěvků
2. 7. 2014   #1
-
0
-

soucre code :  

#include <Windows.h>
#include <stdio.h>
#include <string>

#define Address 0x00785198 // Address By Cheat engine
#define Offset 0xd2ed58 // Hex Offset By Cheat Engines
#define Value 23452




int main()
{
 
}

int UIMain()
{
	
	return 0;
}


#pragma once

namespace TESTJJJJJ {

	using namespace System;
	using namespace System::ComponentModel;
	using namespace System::Collections;
	using namespace System::Windows::Forms;
	using namespace System::Data;
	using namespace System::Drawing;

	/// <summary>
	/// Summary for lol
	/// </summary>
	public ref class lol : public System::Windows::Forms::Form
	{
	public:
		lol(void)
		{
			InitializeComponent();
			//
			//TODO: Add the constructor code here
			//
		}

	protected:
		/// <summary>
		/// Clean up any resources being used.
		/// </summary>
		~lol()
		{
			if (components)
			{
				delete components;
			}
		}


	private: System::Windows::Forms::Button^  button1;
	private: System::Windows::Forms::CheckBox^  checkBox1;

	protected: 

	private:
		/// <summary>
		/// Required designer variable.
		/// </summary>
		System::ComponentModel::Container ^components;

#pragma region Windows Form Designer generated code
		/// <summary>
		/// Required method for Designer support - do not modify
		/// the contents of this method with the code editor.
		/// </summary>
		void InitializeComponent(void)
		{
			this->button1 = (gcnew System::Windows::Forms::Button());
			this->checkBox1 = (gcnew System::Windows::Forms::CheckBox());
			this->SuspendLayout();
			// 
			// button1
			// 
			this->button1->Location = System::Drawing::Point(13, 9);
			this->button1->Name = L"button1";
			this->button1->Size = System::Drawing::Size(75, 23);
			this->button1->TabIndex = 2;
			this->button1->Text = L"button1";
			this->button1->UseVisualStyleBackColor = true;
			this->button1->Click += gcnew System::EventHandler(this, &lol::button1_Click);
			// 
			// checkBox1
			// 
			this->checkBox1->AutoSize = true;
			this->checkBox1->Location = System::Drawing::Point(112, 107);
			this->checkBox1->Name = L"checkBox1";
			this->checkBox1->Size = System::Drawing::Size(80, 17);
			this->checkBox1->TabIndex = 3;
			this->checkBox1->Text = L"checkBox1";
			this->checkBox1->UseVisualStyleBackColor = true;
			this->checkBox1->CheckedChanged += gcnew System::EventHandler(this, &lol::checkBox1_CheckedChanged_2);
			// 
			// lol
			// 
			this->AutoScaleDimensions = System::Drawing::SizeF(6, 13);
			this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
			this->ClientSize = System::Drawing::Size(284, 262);
			this->Controls->Add(this->checkBox1);
			this->Controls->Add(this->button1);
			this->Name = L"lol";
			this->Text = L"lol";
			this->ResumeLayout(false);
			this->PerformLayout();

		}
#pragma endregion

    private: System::Void SpeedPosuvaci()
			 {
				 Sleep (2);
				 if (checkBox1->Checked)
				 {
					 *(int*)((*(int*)Address) + Offset) = Value;
				 }
				 Sleep (2);
			 }
	private: System::Void textBox1_TextChanged(System::Object^  sender, System::EventArgs^  e) {
				
			 }
	private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
				 //float i = float::Parse(textBox1->Text);
				 
				 				
			 }

	private: System::Void checkBox1_CheckedChanged_2(System::Object^  sender, System::EventArgs^  e) {
				/* while ((this->checkBox1->Checked)&1)
									 {
										 Sleep (50);// Hotkey Function
                                     *(int*)((*(int*)Address) + Offset) = Value;
									 Sleep (50);
				}*/
				 if (checkBox1->Checked)
				 {
					 while (checkBox1->Checked)
					 {
					 Sleep (1);
					 SpeedPosuvaci();
					 Sleep (1);
					 }
				 }
				 else
				 {
					 SpeedPosuvaci();
				 }
				 
				
				 
			 }
	};
}


skrátka, když na ten checkBox1 kliknu, jadro Whilu se začne dít (funguje to psaní Value do pointra) ale ma forma prestane pracovat, a neda se to vypnout, ani nic podobneho, nevim čim to je, skoušel sem tam dávát i Sleep (50); a však, stejne nefunguje, to znamená, že je chyba nekde jinde.

prosím o pomoc, diky predem

Nahlásit jako SPAM
IP: 178.253.148.–
p3can
~ Anonymní uživatel
312 příspěvků
2. 7. 2014   #2
-
0
-

kratce:

zacyklils UI vlakno. pouzij jiny thread+synchronizaci nebo UI casovac.

dlouze:

trida form a veskery kod v ni se vzdy provadi ve vlakne GUI. to je hlavni vlakno ktere se stara o prekleslovani aplikace. pokud si v nejake metode toho formu zavolas nekonecny cyklus (i sleep je problem) tak dojde k tomu ze ti zamrzne cela aplikace. to o co se snazis se resi budto tak ze si vytvoris jine vlakno ktere muze delat co chce ale pokud to jine vlakno bude chctit manipulovat s jakokoli gui komponentou, tak je treba provest synrchronizaci pres Invoke/dispatcher. alternativne je mozne vyuzit tridu Timer v namespace Form, ktera bude cyklicky provadet operaci s kontexten GUI vlakna (nemusi se to explicitne synchronizovat). chapes ?

Nahlásit jako SPAM
IP: 77.92.213.–
Kalir44
~ Anonymní uživatel
16 příspěvků
3. 7. 2014   #3
-
0
-

No, vlastne nechapu.

V GUI sem docela nováček, mohl bys zde uvest priklad, jak by to s tim timerem melo vypadat?

Nahlásit jako SPAM
IP: 178.253.148.–
p3can
~ Anonymní uživatel
312 příspěvků
3. 7. 2014   #4
-
0
-

ve videu je jak tam dat timer

https://www.youtube.com/watch?v=bSrzNayZxGE

ty ho budes chtit asi i ovladat coz by melo byt pres timer.Enabled=true/false;

doufam ze aspon chapes podstatu proc ti to nejde.

Nahlásit jako SPAM
IP: 77.92.213.–
Kalir44
~ Anonymní uživatel
16 příspěvků
3. 7. 2014   #5
-
0
-

Ne, nevím.

Ohodne lepší by bylo, ukázat mi, v nejakém kodu, jak to má vypadat, jestli mam dat to while do toho timeru nebo co..

Nahlásit jako SPAM
IP: 178.253.148.–
3. 7. 2014   #6
-
+1
-
Zajímavé

while vůbec nepoužít. To, co se mělo provádět uvnitř cyklu while dát do obsluhy události timeru.

hu

Nahlásit jako SPAM
IP: 195.178.67.–
Kalir44
~ Anonymní uživatel
16 příspěvků
3. 7. 2014   #7
-
0
-

ukaž mi to v príkladu, skoušel sem neco, ale nefunguje.

Nahlásit jako SPAM
IP: 178.253.148.–
p3can
~ Anonymní uživatel
312 příspěvků
3. 7. 2014   #8
-
0
-

jinak samozrejme to o co se nejspis pokousis (a to je podle me zmena pameti jineho programu pres adresu kterou ti poskytl CheatEngine) ti samozrejme takto nepujde, protoze kazdy process (program) ma pouze svuj vlastni vyhrazeny pametovy prostor a nemuze zasahovat do jineho beziciho procesu. jedina moznost jak to udelat je vyuzit funkce operacniho systemu pro manipulaci s pameti.

Nahlásit jako SPAM
IP: 77.92.213.–
Kalir44
~ Anonymní uživatel
16 příspěvků
3. 7. 2014   #9
-
0
-

ano je to obyčejný 1-levelový pointer z Cheat Enginu, ale jak sem psal, ono to funguje, když kliknu ten checkBox tak to funguje jak ma, avšak program prestane pracovat, a nejde to vypnout.

Je tedy pak jiná možnost, ne prez timer která by ,,fungováni" prepsávani pameti umožnila?

Nahlásit jako SPAM
IP: 178.253.148.–
p3can
~ Anonymní uživatel
312 příspěvků
3. 7. 2014   #10
-
0
-

a coze ma delat ten tvuj program presne ? s jakou pameti presne manipulujes? co to vlastne ma delat ?

pro tebe je nejjednoduzsi pouzit ten casovac nez thread a synchrnizovat to. z toho videa to musi byt jasne.

do timeru ontick napises
SpeedPosuvaci();

z tela te funkce odstranis jak ten cyklus while tak ty sleep

to checked changed zmenis na


if (checkBox1->Checked)
timer1.enabled=true;

else

timer1.enabled=false;

Nahlásit jako SPAM
IP: 77.92.213.–
Kalir44
~ Anonymní uživatel
16 příspěvků
4. 7. 2014   #11
-
0
-

Super, problem sa vyriešil, ďakujem že ste so mnou mali trpezlivosť. :D

Nahlásit jako SPAM
IP: 178.253.178.–
4. 7. 2014   #12
-
0
-

#10 p3can
nebylo by jednodušší timer1.enabled = checkBox1->Checked ?

hu

Nahlásit jako SPAM
IP: 195.178.67.–
p3can
~ Anonymní uživatel
312 příspěvků
4. 7. 2014   #13
-
0
-

#12 hlucheucho
ty uz znis jak muj Resharper (ktery by ve quick fixu nejspis rekl to same)   .

Nahlásit jako SPAM
IP: 77.92.213.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 5 hostů

Podobná vlákna

Checkbox — založil Milan

Checkbox — založil 79kiko

CheckBox — založil Adrian

Multi checkbox — založil neimenuje

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý