W tym programie po prostu ustaw, by po wykonaniu skryptu wpisal to, co jest w schowku.
Losowanie z prawdopodobieństwem
- Rejestracja: dni
- Ostatnio: dni
- Postów: 57
Kurde jednak nie kopiuje takie coś mam
Myślałem , że kopiuje , ale teraz jak kilka razy uruchomilem to nie kopiuje jednak , ale bledow nie ma.
public class Program
{
public static void Main()
{
var keyManager = new System.Collections.Generic.Dictionary<string, double>();
keyManager.Add("F3", 0.3);
keyManager.Add("F4", 0.3);
keyManager.Add("F5", 0.4);
var rnd = new System.Random();
var rndValue = rnd.NextDouble();
foreach (var key in keyManager.Keys)
{
var value = keyManager[key];
if (value > rndValue)
{
System.Windows.Forms.Clipboard.SetText(key);
break;
}
}
}
}
Przecież na stronie dokumentacji, którą podałem są kody dla F'ów....
{F1} {F2} itd. https://msdn.microsoft.com/en[...]dows.forms.sendkeys.send.aspx
A Wy ciągle macie wpisane bez klamerek.
Kolega napisał coś takiego tylko nie wiem jak mam się do tego zastosować.
- Rejestracja: dni
- Ostatnio: dni
- Postów: 6967
zamiast keyManager.Add("F3",... napisz keyManager.Add("{F3}",...
i tak dla wszystkich Fów.
- Rejestracja: dni
- Ostatnio: dni
- Postów: 57
Mam napisane takie coś , ale nie klika :(
public class Program
{
public static void Main()
{
var keyManager = new System.Collections.Generic.Dictionary<string, double>();
keyManager.Add("{F3}", 0.3);
keyManager.Add("{F4}", 0.5);
keyManager.Add("{F5}", 0.2);
var rnd = new System.Random();
var rndValue = rnd.NextDouble();
foreach (var key in keyManager.Keys)
{
var value = keyManager[key];
if (value > rndValue)
{
System.Windows.Forms.SendKeys.Send(key);
break;
}
}
}
}
- Rejestracja: dni
- Ostatnio: dni
public class Program
{
public static void Main()
{
var keyManager = new System.Collections.Generic.Dictionary<string, double>();
keyManager.Add("F3", 0.7);
keyManager.Add("F4", 0.2);
keyManager.Add("F5", 0.1);
var rnd = new System.Random();
var rndValue = rnd.NextDouble();
foreach (var key in keyManager.Keys)
{
var value = keyManager[key];
if (value > rndValue)
{
System.Windows.Forms.SendKeys.SendWait("{" + key + "}");
break;
}
}
}
}
- Rejestracja: dni
- Ostatnio: dni
- Postów: 57
Bledow teraz juz nie ma.
Nie chce jedynie cos skubaniec kliknac.
- Rejestracja: dni
- Ostatnio: dni
Wpisz to:
public class Program
{
public static void Main()
{
System.Windows.Forms.SendKeys.SendWait("test");
}
}
I ustaw wszystko tak samo jak ja to zrobilem:

Czy wtedy chociaz "klika"?
- Rejestracja: dni
- Ostatnio: dni
- Postów: 57
Odplillem notatnik i wpoisalem komende z gory napisalo tekst w notatniku test tylko ze to napisalo tekst a ma kliknac F3 a nie napisac moze to roznica jakas?
- Rejestracja: dni
- Ostatnio: dni
A czy to zadziala?
public class Program
{
public static void Main()
{
var keyManager = new System.Collections.Generic.Dictionary<string, double>();
keyManager.Add("{F3}", 0.7);
keyManager.Add("{F4}", 0.2);
keyManager.Add("{F5}", 0.1);
var rnd = new System.Random();
var rndValue = rnd.NextDouble();
foreach (var key in keyManager.Keys)
{
var value = keyManager[key];
if (value > rndValue)
{
System.Windows.Forms.SendKeys.SendWait(key);
break;
}
}
}
}
- Rejestracja: dni
- Ostatnio: dni
Stranek napisał(a):
Nie chce dziad nacisnąć.
A skąd wiesz, ze nie naciska?
- Rejestracja: dni
- Ostatnio: dni
Wejdz na ta strone: http://www.keyboardtester.com/tester.html
I sprawdz, czy naciska te F3 itd.
- Rejestracja: dni
- Ostatnio: dni
- Postów: 57
Bo jak sam nacisne f3 to mam hotkery ustawiony w programiku , ktory zmienia rozdzielczosc.
Moge pokazac teamviewer albo cos takiego jesli ma Pan chwile czy cos
- Rejestracja: dni
- Ostatnio: dni
- Postów: 57
Wyswietlaja sie na tej stronie ze naciska F3 ale tez CRTL SHIFT
- Rejestracja: dni
- Ostatnio: dni
- Postów: 57
I tez caly czas losuje F3 a przeciez ma losowac rozne ?
- Rejestracja: dni
- Ostatnio: dni
U mnie z tym kodem:
public class Program
{
public static void Main()
{
var keyManager = new System.Collections.Generic.Dictionary<string, double>();
keyManager.Add("{F3}", 0.7);
keyManager.Add("{F4}", 0.2);
keyManager.Add("{F5}", 0.1);
var rnd = new System.Random();
var rndValue = rnd.NextDouble();
foreach (var key in keyManager.Keys)
{
var value = keyManager[key];
if (value > rndValue)
{
System.Windows.Forms.SendKeys.SendWait(key);
break;
}
}
}
}
działa to tak:
- Rejestracja: dni
- Ostatnio: dni
żeby działało z wszystkimi klawiszami zmień z:
if (value > rndValue)
na
if (value < rndValue)
- Rejestracja: dni
- Ostatnio: dni
- Postów: 57
O teraz zaczelo klikac.
Tylko ze jakby nie łapie jak sam nacisne na f3 to zmienia rozdzielczosc a tutaj f3 nie zmienia a w tym co Pan pokazal tej stronie dziala zmienianie.
Jest roznica miedzy systemowa klawiatura a ta co sam naciskam :D ?
I teraz już daje różne wyniki jest okej.
- Rejestracja: dni
- Ostatnio: dni
- Postów: 57
Mimo wszystko bardzo dziekuje.
Kopiowanie tekstu działa wysmienicie zreszta klawiatura też , ale jak widać to jest roróżnienie jakieś tych klawiatur.
I te 0.7 to jest 70% tak ?
- Rejestracja: dni
- Ostatnio: dni
- Postów: 6967
Coś mi się wydaje, że prawdopodobieństwo jest źle zaimplementowane. Przedziały na siebie nachodzą.
Mamy do podziału 1.0. Więc trzeba przydzielić odpowiednią część liczby każdemu klawiszowi.
od 0 do 0.7 jednemu = 0.7
od 0.7 do 0.9 drugiemu = 0.2
od 0.9 do 1.0 trzeciemu = 0.1
I nie wiem jak z kolejnością kluczy w słowniku....
- Rejestracja: dni
- Ostatnio: dni
- Postów: 57
keyManager.Add("F3", 0.7);
keyManager.Add("F4", 0.2);
keyManager.Add("F5", 0.1)
Jest tak czyli ok.
A slyszeliscie o czyms takim jak rozpoznanie klawiatury systemowej i programowej.
Bo klikajac samemu na klawiaturze f4 zmieniam rozdzielczosc tutaj klika bo widac to na stronie http://www.keyboardtester.com/tester.html
Jedynie w samym windows jakby nie klika.
Da sie moze cos z ytm zrobic?
Co do rotacji chyba jest okej sprawdzalem i by sie to zgadzalo dosyc.
- Rejestracja: dni
- Ostatnio: dni
- Postów: 57
Teraz jak odpaliłem kilkanaście tych skryptow to w sumie bylo piec razy f3 cztery razy f4 i dwa razy f5.
A ma byc niby 70% f3 20% f4 i 10%
F4 F4 F4 F4 F4 F3 F3 F4 F4 F3 F4 F3 F4 F4 F5 F3 F3 F3 F4 F4 F4 F4 F3 F3 F4 F5 F5 F4 F4 F4 F4 F4 F4 F3 F3 F5 F4 F4 F3 F4 F4 F5 F4 F4 F3 F4 F4 F4 F4 F3 F3
Za duzo F4 skoro ma byc tylko 20%
- Rejestracja: dni
- Ostatnio: dni
Moze cos tam zamieszalem z tym prawdopodobienstwem. Tak powinno byc ok:
class Propability
{
public double Ratio { get; private set; }
public Propability(double ratio)
{
if (ratio < 0) ratio = 0;
if (ratio > 1) ratio = 1;
this.Ratio = ratio;
}
}
class KeyMenager
{
public string KeyValue { get; private set; }
public int Occurences { get; private set; }
public Propability Propability { get; private set; }
public KeyMenager(string keyValue, double propability)
{
this.KeyValue = keyValue;
this.Occurences = 0;
this.Propability = new Propability(propability);
}
public void AddOccurence() => Occurences++;
public override string ToString()
{
return $"Klawisz {KeyValue} z szansa {Propability.Ratio} wystapil {Occurences} razy";
}
}
class Program
{
static void Main(string[] args)
{
var keys = new KeyMenager[]
{
new KeyMenager("F3", 0.7),
new KeyMenager("F4", 0.2),
new KeyMenager("F5", 0.1),
};
var rnd = new Random();
for (int i = 0; i < 1000000; i++)
{
var randomValue = rnd.NextDouble();
double sum = 0;
foreach (var key in keys)
{
sum += key.Propability.Ratio;
if (sum > randomValue)
{
key.AddOccurence();
break;
}
}
}
keys.ToList().ForEach(x => Console.WriteLine(x));
}
}
Na wyjsciu otrzymamy:

- Rejestracja: dni
- Ostatnio: dni
- Postów: 57
A kod od kopiowania gdzies mozna tutaj uzyc i podstawic go pod nasz kod?
Okazalo sie ze macro udostepnia if clipboard value i teraz uzywam sobie tego kopiowania i dziala elegancko.
Jedynie uzylbym lepszego randomowania skoro i tak już Pan podal
- Rejestracja: dni
- Ostatnio: dni
Stranek napisał(a):
A kod od kopiowania gdzies mozna tutaj uzyc ?
Wstaw go miedzy key.AddOccurence(); a break
- Rejestracja: dni
- Ostatnio: dni
- Postów: 57
Wklejal Pan może ten kod w te macro ?
Bo ja mam ze trzeba kod przerobic a od tych szlaczkow to juz mnie oczy bolą podziwiam Was :P
- Rejestracja: dni
- Ostatnio: dni
- Postów: 57
Nie dam rady tego osadzić w macro :(
Pana poprzedni kod mi teraz działa super bo uzywam komendy if clipboard equlas szukam mi tego co trzeba i jest super.
Gdyby był Pan tak miły to mógłby jedynie podać nowy kod już gotowy do tego macro , z którego korzystaliśmy bo nie mogę to za chiny tam umieścić poprawnie a fajnie by było gdyby losowanie było w 100% dziaająca i widzę tam jeszcze jakąś konsole może mógłby Pan ja usunąć a wstawić kopiowanie do clipboard ?